Я хочу знать, как работает функция типа __new__
, как он может создать класс с использованием параметров attr.Как python создает класс с использованием атрибутов в списке параметров функции __new __()?
для примера:
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', '')
Затем вы можете использовать пользовательский класс как это: и = Пользователь (ID = 10190, имя = 'Michael', email='[email protected] ') тип печати (u.id)
Итак, как функция __new__
переводит StringField на str?