为什么 __init__() 方法中的属性未显示在 dir(Foo) API 中?

我无法理解为什么 dir(Foo) 不显示在init 方法中定义的属性。我搜索并找到了 Kindall 答案。但仍然无法完全理解。

class Foo(object):

    kind = 'car'

    def __init__(self, a):

        self.a = a


    def bar(self, b):

        return self.a + b


f = Foo(1)

print(dir(Foo))  #['bar','kind']

print(dir(f))    #['a','bar','kind']


叮当猫咪
浏览 233回答 2
2回答

慕的地10843

那是因为a只有在 __init__调用之后才定义。这是一个对象变量,特定于每个Foo 对象。kind另一方面,定义在类命名空间中,它是一个类字段。这就是为什么当您dir(Foo)看不到时a- 它只列出属于该类的内容。f另一方面, 是一个已经调用的对象,__init__因此a定义了它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python