python重写方法和重写特殊构造方法

  • Post category:Python

在Python中,我们可以通过重写方法和重写特殊构造方法来实现自定义类的行为。下面是关于如何重写方法和特殊构造方法的完整攻略。

1. 重写方法

重写方法指在子类中重新定义父类中已有的方法。这样可以改变方法的行为,使其适应子类的需求。我们可以以下代码来重写方法:

class Parent:
    def my_method(self):
        print("Parent method")

class Child(Parent):
    def my_method(self):
        print("Child method")

c = Child()
c.my_method() # 输出 "Child method"

在上面的代码中,我们定义了一个Parent类和一个Child类。Child类继承了Parent类,并重写了my_method方法。当我们创建一个Child类的实例并调用my_method方法时,输出的结果为"Child method",而不是"Parent method"

示例1:重写方法

class Animal:
    def make_sound(self):
        print("Animal sound")

class Dog(Animal):
    def make_sound(self):
        print("Woof!")

d = Dog()
d.make_sound() # 输出 "Woof!"

在上面的代码中,我们定义了一个Animal类和一个Dog类。Dog类继承了Animal类,并重写了make_sound方法。当我们创建一个Dog类的实例并调用make_sound方法时,输出的结果为“Woof!”,而不是“Animal sound”`。

2. 重写特殊构造方法

重写特殊构造方法是指在子类中重新定义父类中已有的特殊构造方法,如__init__方法。样可以改变对象的初始化行为,使其适应子类的需求。我们可以通过以下代码来重写特殊构造方法:

 Parent:
    def __init__(self, name):
        self.name = name

class Child(Parent):
    def __init__(self, name, age):
        super().__init__(name)
        self.age = age

c = Child("Alice", 10)
print(c.name) # 输出 "Alice"
print(c.age) # 输出 10

在上面的代码中,我们定义了一个Parent类和一个Child类。Child类继承了Parent类,并重写了init方法。在Child类的init方法中,我们首先调用父类的init方法,然后再定义子类的属性age。当我们创建一个Child类的实例并访问其属性时,的结果为“Alice”10`。

示例2:重写特殊构造方法

“`pythonclass Person:
def init(self, name):
self.name = name

class Student(Person):
def init(self, name, grade):
super().init(name)
self.grade = grade

s = Student(“Alice”, 10)
print(s.name) # 输出 “Alice”
print(s.grade) # 输出 10
“`

在上面的代码中,我们定义了一个Person类和一个Student类。Student类继承了Person类,并重写了__init__方法在Student类的__init__方法中,我们首先调用父类的__init__方法,然后再定义子类的属性grade。当我们创建一个Student类的实例并访问其属性时,输出的结果为”Alice”10`。

综上所述,我们可以通过重写方法和重写特殊构造方法来实现自定义类的行为。些方法可以让我们更好地控制类的行为,使其适应我们的需求。