Python 多构造函数
本教程将讨论构造函数和处理 Python 中多个构造函数需求的方法。
Python 中的构造函数
在 Java、C++ 和 C# 编程语言等编程语言中,我们有构造函数的概念,该函数仅在类的对象被初始化时运行。构造函数用于初始化所有类属性。此构造函数的名称与类的名称相同。构造函数的概念在 Python 中是相同的,但是对于所有类,构造函数的名称都是 __init__()
。Python 中的构造函数总是接受一个参数,即指向调用对象的指针。下面的代码片段展示了我们如何在 Python 中创建一个非参数化的构造函数。
class Person:
def __init__(self):
print("Constructor Function")
if __name__ == "__main__":
p1 = Person()
输出:
Constructor Function
我们为 Person
类创建了一个非参数化的构造函数,并在 main 函数中创建了一个 Person
类对象。当我们使用 p1 = Person()
创建对象时,会调用构造函数。
Python 中的多个构造函数
在 Java、C# 和 C++ 编程语言中,有一个称为多构造函数的概念,我们可以根据需要为单个类创建任意数量的构造函数。不幸的是,我们无法在 Python 中为单个类定义多个构造函数。解决此限制的一般方法是使用默认参数构造函数。如果在创建类对象时没有传递参数,默认参数构造函数会自动为其类属性分配一个值。如果在对象创建期间指定了某个值,则默认参数构造函数将指定的值分配给类属性。以下代码片段显示了如何在 Python 中使用默认参数构造函数消除对多个构造函数的需求。
class Person:
def __init__(self, name="Tom"):
self.name = name
def show(self):
print("Name = ", self.name)
if __name__ == "__main__":
p1 = Person()
p2 = Person("Mark")
p1.show()
p2.show()
输出:
Name = Tom
Name = Mark
我们通过在函数定义时指定默认值,在上面的代码中创建了一个默认参数构造函数。Person
类的构造函数接受一个参数名称并将其分配给类参数 name
。参数名称的默认值为 Tom
。我们在主函数中创建了 Person
类的两个对象 p1
和 p2
。对象 p1
在初始化时没有指定任何值;对象 p2
将 Mark
作为构造函数参数传递。然后我们用 p1
和 p2
调用了 show()
函数。show()
函数显示 name
属性的值。当 p1
调用 show()
函数时,输出是默认值 Name = Tom
,但是当 p2
调用 show()
函数时,输出是 Name = Mark
,因为我们指定在创建对象 p2
时标记 Mark
。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn