我仍然在学习OOP的概念,如果这是一个很糟糕的问题,请原谅我:
如果在Python中实例化一个对象需要__init__
,为什么以下工作没有调用__init__
?:
class Person:
#Note the lack of __init__(self):
def run(self):
print('I am a person')
man = Person()
man.run() #Prints 'I am a person')
答案 0 :(得分:3)
实例化操作(“调用”一个类对象)创建一个 空对象。许多类喜欢用实例创建对象 根据特定的初始状态进行定制。因此,一个类可以定义一个 名为 init ()的特殊方法,就像这样......
因此不需要__init__
,它是python提供的机制,允许您在初始化对象时设置初始状态。
答案 1 :(得分:1)
如果您不需要进行父类提供的初始化以外的任何初始化,则无需创建__init__
函数。请注意,任何父类的__init__
函数都会自动调用:
In [1]: class Parent(object):
...: def __init__(self):
...: print 'Inside __init__ of parent'
In [2]: class Person(Parent):
...: def run(self):
...: print 'I am a person'
In [3]: p = Person()
Inside __init__ of parent
In [4]: p.run()
I am a person
在现代Python中,任何类都隐式派生自object
类,即使你没有添加任何其他属性,它也可以处理分配内存空间等基本内容。
答案 2 :(得分:0)
__init__
是一个构造函数,这很简单就是在创建对象时调用一个函数。它通常用于设置对象,以便可以使用它。如果不存在__init__
,则仍将创建对象。它只是意味着对象在构造时不会完成任何操作。