Я возвращаюсь к программированию для Google App Engine и обнаружил в старом неиспользуемом коде примеры, в которых я писал конструкторы для моделей. Это кажется хорошей идеей, но о ней нет упоминания в Интернете, и я не могу проверить, работает ли она. Вот надуманный пример, без проверки ошибок и т. Д.:
class Dog(db.Model):
name = db.StringProperty(required=True)
breeds = db.StringListProperty()
age = db.IntegerProperty(default=0)
def __init__(self, name, breed_list, **kwargs):
db.Model.__init__(**kwargs)
self.name = name
self.breeds = breed_list.split()
rufus = Dog('Rufus', 'spaniel terrier labrador')
rufus.put()
** kwargs передаются конструктору Model , если модель построена с указанным parent
или key_name
, или если указаны другие свойства (например, age
) , Этот конструктор отличается от заданного по умолчанию тем, что требует , чтобы были указаны name
и breed_list
(хотя он не может гарантировать, что они являются строками), и он анализирует breed_list
что конструктор по умолчанию не может.
Является ли это допустимой формой создания экземпляров, или я должен просто использовать функции или методы static / class? И если это работает, почему пользовательские конструкторы не используются чаще?