一旦构建了一个类(即定义,未实例化),我就可以访问它的dunder属性。
>>> class Foo:
... 'This is a class.'
>>> Foo.__doc__
'This is a class.'
在定义班级时,有什么方法可以访问__doc__
吗?
class Foo:
'This is a class.'
a = Foo.__doc__ # does not work because Foo is not defined yet
或者可以这样做,因为{<1}}仅在类主体执行后由元类分配?那么它有别名吗?其他dunder属性/方法怎么样?
答案 0 :(得分:1)
您无法将docstring作为类的属性访问(因为类对象尚未存在),但您可以直接获取它,就像本地变量一样:
class Foo:
'This is a class.'
a = __doc__
这可以设置a
的值,如下所示:
>>> Foo.a
'This is a class.'
然而 ,我还没有在官方文档中找到有关此行为的任何信息。目前还不清楚是否能够访问__doc__
这样的官方功能或仅仅是实施细节。如果您想确保您的代码不依赖于可能的实施细节,您可以手动分配到__doc__
,如下所示:
class Foo:
a = __doc__ = 'This is a class.'
它有点难看,但它确保有效。