当您的类没有明确定义__init__方法时会发生什么?

时间:2018-01-16 10:46:01

标签: python class

如果我在python中不使用__init__方法,我的代码质量如何受到影响?一个简单的例子将不胜感激。

2 个答案:

答案 0 :(得分:2)

简短回答;没有任何反应。

长答案;如果您有一个类B,它继承自类A,并且如果B没有定义__init__方法,那么父类(在这种情况下,{{1} }})A被调用。

__init__

如果In [137]: class A: ...: def __init__(self): ...: print("In A") ...: In [138]: class B(A): pass In [139]: B() In A Out[139]: <__main__.B at 0x1230a5ac8> 没有前任,那么将调用全能的超类A的{​​{1}},它什么都不做。

您可以通过查询dunder object来查看类层次结构。

__init__

另请参阅Why do we use __init__ in Python classes?了解何时何地的使用情况。

答案 1 :(得分:1)

这不是质量问题,在python支持的Object-oriented-design中,__init__是在首先创建对象时提供数据的方式。在OOPS中,这称为constructor。换句话说,构造函数是一种准备有效对象的方法

构建大型项目的设计模式依赖于python提供的构造函数。没有它,它们将无法运作,

,例如

  • 您希望跟踪为类创建的每个对象,现在您需要一个在每次创建对象时执行的方法,因此构造函数

  • 构造函数的其他有用示例是假设您要为Bank创建customer对象。现在,银行的客户必须拥有account number,因此基本上您必须为银行的有效客户对象设置规则,因此构造函数。