不幸的是,在 Python 中,类属性不能引用它的类名。以下引发了 NameError
:
class Foo(object):
bar = Foo
在类属性必须引用其类名的情况下(在我的例子中,它是库验证方案的一部分)。最明确的方法是什么?
以下是我目前的尝试:
class Foo(object):
bar = None
Foo.bar = Foo
这行得通,但即使有注释也可能会造成混淆,因为您希望在声明时初始化类属性,而不是在声明类之后。
有没有人有更好的解决方法?
最佳答案
使用元类自动设置它。
def my_meta(name, bases, attrs):
cls = type(name, bases, attrs)
cls.bar = cls
return cls
class Foo(object):
__metaclass__ = my_meta
>>> print Foo.bar
<class '__main__.Foo'>
关于python - 类在类属性中引用自身的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34120391/