Python 多构造函数

Muhammad Maisam Abbas 2023年10月10日
  1. Python 中的构造函数
  2. Python 中的多个构造函数
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 类的两个对象 p1p2。对象 p1 在初始化时没有指定任何值;对象 p2Mark 作为构造函数参数传递。然后我们用 p1p2 调用了 show() 函数。show() 函数显示 name 属性的值。当 p1 调用 show() 函数时,输出是默认值 Name = Tom,但是当 p2 调用 show() 函数时,输出是 Name = Mark,因为我们指定在创建对象 p2 时标记 Mark

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

相关文章 - Python Constructor