2013-11-11 4 views
0

дорогой всеЧто такое магия за ndb.Model constructor?

Это был предел для меня, чтобы знать, что я могу использовать первоначальные свойства модели ndb, как показано ниже. Мне просто нужно использовать аргументы ключевого слова при создании нового экземпляра моего класса сущности.

class MyModel(ndb.Model): 
    foo = ndb.StringProperty() 
    bar = ndb.StringProperty() 
    baz = ndb.StringProperty() 

model_instance = MyModel(foo='foo', bar='bar', baz='baz') 

Это путало меня, потому что я не создал конструктора в своем классе. Как Python знает, как установить свойство без конструктора?

Спасибо!

ответ

1

Читайте документ. https://developers.google.com/appengine/docs/python/ndb/modelclass#Constructor Класс Model имеет конструктор, и вы можете передать аргументы ключевого слова для сопоставления свойствам. Поскольку вы не определяете конструктор для своего класса, он использует конструктор модели

+0

И есть другое поведение под капотом, так как используются метаклассы. Я также хотел бы сказать, что не переоценивать метод __init__, если вы ДЕЙСТВИТЕЛЬНО не знаете, что делаете. –

Смежные вопросы