【发布时间】:2020-12-16 17:17:56
【问题描述】:
我在某处定义了一个基类,可由某些用户扩展。
现在我想访问该用户在其子类中可能定义的变量,以便我可以对它做一些事情。
我尝试使用metaclasses 来解决这个问题
这是设置的示例:
class Meta(type):
def __new__(cls, name, bases, attrs):
clsobj = super().__new__(cls, name, bases, attrs)
print(f'the name of this class is {clsobj.NAME.upper()}')
return clsobj
class Base(metaclass=Meta):
pass
class C1(Base):
NAME = "C1"
if __name__ == "__main__":
c1 = C1()
但我收到以下错误:
AttributeError: type object 'Base' has no attribute 'NAME'
注意Base 类不应该不知道它的子类变量,而应该只访问它们。
【问题讨论】:
-
如何在不知道的情况下访问某些内容?
-
@DeepSpace 在 Python 中是可能的。我只是想不出正确的代码;)
标签: python variables subclass metaclass