1

无论如何要为模型创建另一个类吗?

例如,我有model.py,其中一个类包含:

class Customers(ndb.Model):
  lastname = ndb.StringProperty()
  firstname = ndb.StringProperty()
  license = ndb.StringProperty()
  birthdate = ndb.DateProperty()
  remarks = ndb.TextProperty()

我知道我可以使用 获取模型dir(model),它会输出如下内容:

['Customers', 'CustomerAddresses','Whatever','__builtins__', '__doc__', '__file__', '__name__', '__package__', 'ndb']

但是,有什么方法可以在里面使用这些字符串dir(model)来自动生成另一个类,比如:

class RestCustomers(webapp2.RequestHandler):
  #some code that gets the model class attributes and displays the json string 
  customers = # customer attributes from model
  self.response.headers['Content-Type'] = "application/json"
  self.response.write(json.dumps(customers))

我不确定这是否可能,但有点像 javascript 的工作方式,其中你说类似

var models = dir(models); // which is an array
var class = "Rest"+models[0];

或类似的东西...

4

2 回答 2

2

尝试这样的事情:

from google.appengine.ext.ndb import metadata
class RestCustomers(webapp2.RequestHandler):
    customers = metadata.get_properties_of_kind(Customers)
    self.response.headers['Content-Type'] = "application/json"
    self.response.write(json.dumps(customers))

有关详细信息,请参阅有关元数据的文档。我不完全确定get_properties_of_kind期望如何获得kind论点,因此请尝试一下。

于 2013-08-28T16:41:53.770 回答
0

您可以使用:

self.__setattr__(variable_name, value)

...尝试这样的事情。虽然我不确定你想要什么。我认为您不知道自己想要什么;)通常,如果您必须像这样一起破解某些东西,那么您的想法/设计是不正确的。

class NewClass:
    def __init__(self, inherits):
        for k, v in inherits.__dict__.items():
            self.__setattr__(k, v)
于 2013-08-28T16:06:27.173 回答