为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

叮当猫咪 2021-09-25 10:03:36
我无法理解为什么 dir(Foo) 不显示在init 方法中定义的属性。我搜索并找到了 Kindall 答案。但仍然无法完全理解。class Foo(object):    kind = 'car'    def __init__(self, a):        self.a = a    def bar(self, b):        return self.a + bf = Foo(1)print(dir(Foo))  #['bar','kind']print(dir(f))    #['a','bar','kind']
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-09-25
  • 2 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信