📜  Python中的构造函数(1)

📅  最后修改于: 2023-12-03 14:46:41.135000             🧑  作者: Mango

Python中的构造函数

在Python中,构造函数是一种特殊的函数,它在对象被创建时自动调用。通常用来初始化对象的各种属性。

创建对象与构造函数的调用

为了创建对象,我们需要先定义一个类。类是一个模板,用来描述对象的属性和方法。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
p1 = Person("Alice", 25)

在上面的代码中,我们定义了一个名为Person的类,它有两个属性nameage__init__是Python中的构造函数,它接收两个参数nameage。在构造函数中,我们给对象的属性nameage赋初始值。最后,我们使用Person类创建了一个对象p1,并传入了两个参数。

当我们创建对象后,构造函数会自动被调用,并将参数传给它。这意味着在对象被创建时,它的属性已经被初始化了。

self参数

我们注意到,在构造函数中,除了前面的参数nameage之外,还有一个名为self的参数。self代表的是类的实例对象,也就是被创建的对象本身。在构造函数中,我们通过self来操作对象的属性和方法。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def say_hello(self):
        print("Hello, my name is " + self.name + " and I am " + str(self.age) + " years old.")
        
p1 = Person("Alice", 25)
p1.say_hello() # Output: Hello, my name is Alice and I am 25 years old.

在上面的代码中,我们定义了一个say_hello方法,它使用self.nameself.age访问对象的属性,并输出一句问候语。然后,我们在创建了一个对象p1之后,调用了这个方法。

继承与构造函数

在Python中,子类可以继承父类的属性和方法。当子类的构造函数被调用时,可以用super()来调用父类的构造函数。

class Student(Person):
    def __init__(self, name, age, major):
        super().__init__(name, age)
        self.major = major
        
    def say_hello(self):
        print("Hello, my name is " + self.name + " and I am " + str(self.age) + " years old. My major is " + self.major + ".")
        
s1 = Student("Bob", 20, "Computer Science")
s1.say_hello() # Output: Hello, my name is Bob and I am 20 years old. My major is Computer Science.

在上面的代码中,我们定义了一个名为Student的子类,它继承了Person类。子类的构造函数需要传入三个参数nameagemajor。在构造函数中,我们调用了父类的构造函数,然后再给子类新增了一个属性major。最后,我们定义了一个say_hello方法,输出一句问候语,并包含major属性。创建对象p1之后,调用了这个方法。

总结

构造函数是Python中重要的概念之一,它用来初始化对象的属性。在构造函数中使用self参数可以轻松操作对象的属性和方法。在子类中,可以使用super()调用父类的构造函数。