这个Python示例是否仍在初始化一个对象(没有__init__)

时间:2014-09-09 08:00:12

标签: python oop python-3.x

我仍然在学习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')

3 个答案:

答案 0 :(得分:3)

来自python documentation

  

实例化操作(“调用”一个类对象)创建一个   空对象。许多类喜欢用实例创建对象   根据特定的初始状态进行定制。因此,一个类可以定义一个   名为 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__,则仍将创建对象。它只是意味着对象在构造时不会完成任何操作。