python 函数继承方法

  • Post category:Python

函数继承是OOP编程中常用的特性之一。它可以帮助我们避免重复的代码,提高代码的复用性。Python中的函数继承相对其他OOP语言更为灵活,可以通过多种方式实现。下面详细讲解Python函数继承的完整攻略,包含以下几个方面:

  1. 父类和子类基本概念
  2. 函数继承的方式
  3. 子类重写父类函数
  4. super()函数的使用

父类和子类基本概念

在Python中,我们可以使用class定义一个类,class的实例化即为对象。类有一个重要的概念,那就是父类和子类。

父类指的是在继承关系中被继承的类,也称为基类或超类。子类指的是继承父类的类,也称为派生类或衍生类。

我们可以通过继承父类的方式在子类中复用父类的属性和方法。

函数继承的方式

在Python中,函数继承一般有以下两种方式。

方式一:直接继承

直接继承可以直接在子类中使用父类的方法。

# 定义一个父类
class ParentClass:
    def parent_method(self):
        print("This is parent method.")

# 定义一个子类,直接继承父类
class ChildClass(ParentClass):
    pass

# 实例化子类
child = ChildClass()

# 调用父类方法
child.parent_method() # 输出 This is parent method.

在上面的代码中,我们定义了一个ParentClass类和一个ChildClass类。ChildClass类继承了ParentClass类,所以ChildClass能够访问和使用ParentClass类中的parent_method()函数。

方式二:重写继承

重写继承是指在子类中对父类方法进行修改或者完善。在这种情况下,我们需要注意的是必须实例化子类,并调用子类中的函数。

# 定义一个父类
class ParentClass:
    def parent_method(self):
        print("This is parent method.")

# 定义一个子类,重写父类方法
class ChildClass(ParentClass):
    def parent_method(self):
        print("This is child method.")

# 实例化子类
child = ChildClass()

# 调用子类方法
child.parent_method() # 输出 This is child method.

在上面的代码中,我们定义了一个ParentClass类和一个ChildClass类。ChildClass类继承了ParentClass类,并重写了parent_method()函数。在实例化子类后,我们调用了它内部的parent_method()函数,输出了 This is child method.。

子类重写父类函数

在重写继承的情况下,子类可以重写(override)父类的方法。即在子类中定义和父类同名的方法,实现自己的功能。这样,当我们调用子类的方法时,就会自动调用子类的方法。

# 定义一个父类
class ParentClass:
    def my_method(self):
        print("This is parent method.")

# 定义一个子类,重写父类方法
class ChildClass(ParentClass):
    def my_method(self):
        print("This is child method.")

# 实例化子类
child = ChildClass()

# 调用子类方法
child.my_method() # 输出 This is child method.

在上面的代码中,我们定义了一个ParentClass类和一个ChildClass类。ChildClass类继承了ParentClass类,并重写了my_method()函数。在实例化子类后,我们调用了它内部的my_method()函数,输出了 This is child method.。

super()函数的使用

如果我们在重写继承的情况下,想要调用父类方法中的代码,可以使用super()函数。在子类中,我们可以使用super()函数,调用父类中的方法。

# 定义一个父类
class ParentClass:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def sum(self):
        return self.x + self.y

# 定义一个子类,重写父类方法
class ChildClass(ParentClass):
    def product(self):
        result = super().sum()
        return self.x * self.y * result

# 实例化子类
child = ChildClass(2, 3)

# 调用子类方法
print(child.product()) # 输出 30

在上面的代码中,我们定义了一个ParentClass类和一个ChildClass类。ChildClass类继承了ParentClass类,并重写了product()函数。在product()函数中,我们调用了父类中的sum()函数,并使用super()函数实现。在实例化子类后,我们调用了它内部的product()函数,返回了30。