python - 类在类属性中引用自身的最佳方式是什么?

标签 python

不幸的是,在 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/

相关文章:

python - Python 上的菜单循环

python - Python导入的效率

python - PGadmin未加载

python - 我如何计算这个按位公式的倒数?

python - 将 uuid 添加到 pandas DataFrame 中的新列

python - 编写使用 youtube-dl 仅提取下载链接的 python 脚本?

Python GTK : How to make it so a checkbox determines if a window will open or not

python - 错误 SSL 与 python (https)

python - 如何在列表迭代过程中暂停并开始倒退?

python - Selenium + ChromeDriver printToPDF