【发布时间】:2015-09-23 07:00:22
【问题描述】:
如果我有 Foo 类...
class Foo(object):
bar = True
调用
Foo.bar是否会实例化一个 Foo 类型的对象,该对象会立即被垃圾回收?我是否必须在 Foo 和 bar 之间包含
()才能创建该类型的实例?如果我确实需要括号,它们会调用什么方法?
__init__()?
【问题讨论】:
标签: python
如果我有 Foo 类...
class Foo(object):
bar = True
调用 Foo.bar 是否会实例化一个 Foo 类型的对象,该对象会立即被垃圾回收?
我是否必须在 Foo 和 bar 之间包含 () 才能创建该类型的实例?
如果我确实需要括号,它们会调用什么方法? __init__()?
【问题讨论】:
标签: python
调用 Foo.bar 是否会实例化一个 Foo 类型的对象,该对象会立即被垃圾回收?
没有。您在此处将Foo.bar 定义为类属性,而不是实例属性。
我是否必须在 Foo 和 bar 之间包含 () 才能创建该类型的实例?
是的,调用Foo() 是创建Foo 对象的正确语法。
如果我确实需要括号,它们会调用什么方法?
__init__()?
首先将调用__new__(可能来自超类object)来实际创建新对象,然后调用__init__ 来初始化已经存在的对象。
【讨论】: