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
中覆盖一下这个方法再试试

0
2
bobby
回复
东泽XD
你贴一下完整的代码我看看
2021-04-17
共2条回复

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程