My_orm代码中遇到的问题
来源:8-5 自定义元类

东泽XD
2020-07-23
# 余下代码省略
class BaseModel(metaclass=ModelMetaClass):
def __init__(self, *args, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
return super().__init__()
class User(BaseModel):
name = CharField(db_column="name", max_length=10)
age = IntField(db_column="age", min_value=1, max_value=100)
if __name__ == "__main__":
user = User(name="bobby", age=28)
print(user.__dict__)
print(User.__dict__)
这段代码中User继承了Basemodel的__init__方法并且实例化了user对象,但是对象使用__dict__却找不到对象属性是为什么?
写回答
1回答
-
bobby
2020-07-24
User.__dict__是类的dict 而setattr(self, key, value)是实例对象的属性
user.__dict__访问的是User类实例的属性,而你只是在BaseModel中使用了init方法 你在User
中覆盖一下这个方法再试试022021-04-17
相似问题