How to access built-in class attributes in class body at class definition time?
一旦构建了一个类(即定义的,而不是实例化的),我就可以访问它的dunder属性。
1 2 3 4 | >>> class Foo: ... 'This is a class.' >>> Foo.__doc__ 'This is a class.' |
在定义类时,有没有任何方法可以访问
1 2 3 | class Foo: 'This is a class.' a = Foo.__doc__ # does not work because Foo is not defined yet |
或者不能这样做,因为
不能将docstring作为类的属性访问(因为类对象尚不存在),但可以直接获取它,如局部变量:
1 2 3 | class Foo: 'This is a class.' a = __doc__ |
这设置了预期的EDOCX1的值(0):
1 2 | >>> Foo.a 'This is a class.' |
但是,我在官方文档中还没有找到关于这种行为的任何信息。目前还不清楚是否能够像这样访问EDOCX1[1]是一个官方功能,还是仅仅是一个实现细节。如果您希望绝对确保您的代码不依赖于可能的实现细节,那么可以像这样手动分配给
1 2 | class Foo: a = __doc__ = 'This is a class.' |
它有点难看,但肯定能用。