如果我不在python中使用__init__
方法,我的代码质量会受到怎样的影响?举一个简单的例子将不胜感激。
简短的回答;什么也没发生。
长答案;如果你有一个类B
,它继承自类A
,并且如果B
没有定义__init__
方法,那么父级(在本例中为 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
没有前身,那么全能超类object
的__init__
就会被调用,它什么也不做。
您可以通过查询 dunder __mro__
来查看类层次结构。
In [140]: B.__mro__
Out[140]: (__main__.B, __main__.A, object)
另请参阅为什么我们在 Python 类中使用 __init__?,了解何时何地适合使用的一些上下文。
这里不是质量问题,在python支持Object-oriented-design
中,__init__
是在首先创建对象时提供数据的方法。在OOPS
,这被称为constructor
。换句话说,构造函数是准备有效对象的方法。
大型项目的设计模式依赖于python提供的构造函数功能。没有这个,它们将无法运行,
例如
-
你想要跟踪为类创建的每个对象,现在你需要一个每次创建对象时执行的方法,因此构造函数。
-
构造函数的另一个有用示例是假设您要为 Bank 创建一个
customer
对象。现在银行的客户必须有一个account number
,所以基本上你必须为银行的有效客户对象设置一个规则,因此构造函数。