【问题标题】:Does calling an attribute of a class instantiate an object of that class in Python?调用类的属性是否会在 Python 中实例化该类的对象?
【发布时间】:2015-09-23 07:00:22
【问题描述】:

如果我有 Foo 类...

class Foo(object): 

    bar = True        
  • 调用 Foo.bar 是否会实例化一个 Foo 类型的对象,该对象会立即被垃圾回收?

  • 我是否必须在 Foo 和 bar 之间包含 () 才能创建该类型的实例?

  • 如果我确实需要括号,它们会调用什么方法? __init__()?

【问题讨论】:

    标签: python


    【解决方案1】:

    调用 Foo.bar 是否会实例化一个 Foo 类型的对象,该对象会立即被垃圾回收?

    没有。您在此处将Foo.bar 定义为类属性,而不是实例属性。

    我是否必须在 Foo 和 bar 之间包含 () 才能创建该类型的实例?

    是的,调用Foo() 是创建Foo 对象的正确语法。

    如果我确实需要括号,它们会调用什么方法? __init__()?

    首先将调用__new__(可能来自超类object)来实际创建新对象,然后调用__init__ 来初始化已经存在的对象。

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 2013-01-08
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多