【发布时间】:2016-05-22 02:04:45
【问题描述】:
我想知道 __new__ 类型的函数是如何工作的,它如何使用 attr 参数创建一个类。
例如:
class ModelMetaclass(type):
def __new__(cls, name, bases, attrs):
return type.__new__(cls, name, bases, attrs)
class User(Model):
__metaclass__ = ModelMetaclass
id = StringField(primary_key=True, ddl='varchar(50)')
email = StringField(ddl='varchar(50)')
password = StringField(ddl='varchar(50)')
class StringField(Field):
def __init__(self, **kw):
self.name = kw.get('name', None)
self.primary_key = kw.get('primary_key', False)
self.ddl= kw.get('ddl', '')
然后,您可以像这样使用 User 类: u = User(id=10190, name='Michael', email='orm@db.org') 打印类型(u.id)
那么,__new__ 函数是如何将 StringField 翻译成 str 的呢?
【问题讨论】: