📜  Python构造函数(1)

📅  最后修改于: 2023-12-03 15:19:34.158000             🧑  作者: Mango

Python构造函数

在面向对象编程(OOP)中,构造函数是一个特殊的方法,用于初始化新对象。在Python中,我们可以通过定义类中的__init__()方法来使用构造函数。当我们创建一个新的类实例时,Python会自动调用__init__()方法,以初始化该实例。

定义构造函数

在Python中,我们使用关键字__init__()来定义类的构造函数。这个方法的第一个参数必须是self,表示它所属的实例对象,也就是这个类的某个具体实例。其他参数则可以根据具体情况来定义。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print("A new person has been created!")

在上述代码中,我们定义了一个名为Person的类,并定义了它的构造函数__init__(),该函数有两个参数name和age。在该构造函数中,我们将这两个参数赋值给self.name和self.age属性,并打印出一条消息"A new person has been created!"。

创建对象

当我们实例化一个类时,会自动调用其构造函数,也就是__init__()方法。我们可以直接用类名创建一个新的实例对象,并传递相关的参数。

person1 = Person("Tom", 25)
person2 = Person("Jerry", 30)

在上述代码中,我们分别创建了名为person1和person2的两个Person类的实例对象,它们的name和age属性分别为("Tom", 25)和("Jerry", 30)。

self属性

在Python中,self是实例对象本身的一个引用,它在构造函数中表示新创建的实例对象。通过使用self,我们可以访问对象的属性。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print("Hi, my name is " + self.name + ", and I'm " + str(self.age) + " years old.")

在上述代码中,我们在Person类中增加了一个introduce()方法,这个方法用来输出名为self.name的对象的名称和 self.age属性的年龄。可以看到,在introduce()方法中,我们也使用了self.name和self.age属性来获取对象的信息。

代码示例

下面是一个完整的示例代码:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print("A new person has been created!")

    def introduce(self):
        print("Hi, my name is " + self.name + ", and I'm " + str(self.age) + " years old.")

person1 = Person("Tom", 25)
person1.introduce()

person2 = Person("Jerry", 30)
person2.introduce()

这段代码将创建两个Person实例。第一个实例是Tom,25岁,第二个实例是Jerry,30岁。在每个实例创建时,init()方法都会被调用,并打印出一条消息。然后,调用每个实例的introduce()方法,该方法将输出实例的姓名和年龄。

输出结果为:

A new person has been created!
Hi, my name is Tom, and I'm 25 years old.
A new person has been created!
Hi, my name is Jerry, and I'm 30 years old.
结论

构造函数是在创建对象时自动调用的特殊方法,用于初始化新对象的状态。在Python中,我们使用关键字__init__()来定义构造函数,通过self属性来获取对象的信息。构造函数为我们提供了一种有效的方式来组织和初始化类,这在实际开发中非常有用。