gpt4 book ai didi

python - 将动态属性添加到类,而不是实例

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:01 28 4
gpt4 key购买 nike

我正在寻找一种向类(而非实例)添加动态属性的方法。类似于 Django 对模型经理所做的事情。基本上我想要实现的是:

class Manager:
def __init__(self, table_name):
self.table_name = table_name
# rest omitted for brevity

class BaseModel:
# somehow create a new instance of Manager
# and send the init param based off BaseModel's child
# class table_name Meta property

class MyModel(BaseModel):
class Meta:
table_name = 'my_table'

MyModel.manager # should return an instance of Manager(table_name='my_table')

我试过使用构造函数 (__new__),但显然只有在我至少创建了一个 MyModel 实例后,它才有效。

最佳答案

您可以使用 __init_subclass__为此目的:

class BaseModel:
def __init_subclass__(cls):
cls.manager = Manager(cls.Meta.table_name)

关于python - 将动态属性添加到类,而不是实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58885398/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com