c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python中的继承是什么

更新时间:2023-12-09

Python 中的继承

Python中继承是一种面向对象编程技术,可以使得子类可以使用父类的属性和方法。继承是一种代码重用的方式,它提供了一种扩展已有类的方式,使得程序可以更加灵活。

在 Python 中,我们可以使用以下代码来定义一个基类:

    class BaseClass:
        def __init__(self):
            self.name = "BaseClass"
            
        def display_name(self):
            print(self.name)

上面代码中,我们定义了一个基类 BaseClass,它有一个成员 name,并定义了一个方法 display_name(),用于打印 name 值。

接下来,我们定义一个子类 ChildClass 继承自 BaseClass,实现一个新的方法:

    class ChildClass(BaseClass):
        def __init__(self):
            super().__init__()
            self.age = 10
            
        def display_age(self):
            print(self.age)

在上面的示例中,我们定义了一个新的子类 ChildClass,它继承自 BaseClass。在 __init__() 方法中,我们使用 super() 方法来调用父类的 __init__() 方法。

现在我们可以通过 ChildClass 的实例访问父类的成员和方法,例如:

    child = ChildClass()
    child.display_name()
    child.display_age()

这将产生以下输出:

    BaseClass
    10

Python 中的多继承

在 Python 中,还可以实现多重继承。多重继承是指一个子类可以同时继承多个基类。

以下示例展示了如何在 Python 中实现多重继承:

    class BaseClass1:
        def display(self):
            print("BaseClass1")
            
    class BaseClass2:
        def display(self):
            print("BaseClass2")
            
    class ChildClass(BaseClass1, BaseClass2):
        pass

在上面的示例中,我们定义了两个基类 BaseClass1 和 BaseClass2,然后定义了一个子类 ChildClass,它同时继承了两个基类。

现在我们可以创建一个 ChildClass 的实例,并使用它的 display() 方法,可以看到它将依次调用父类的对应方法:

    child = ChildClass()
    child.display()

这将产生以下输出:

    BaseClass1

在上面的示例中,我们可以看到,当子类继承了两个基类并且它们都有一个相同的方法时,子类只会调用其中一个基类的方法。如果我们希望指定调用哪个基类的方法,可以使用 super() 方法来实现。

Python 中的方法重载

在 Python 中,子类可以重载父类的方法。当子类重载了父类的方法时,子类将使用自己的实现。

以下示例展示了如何实现方法重载:

    class BaseClass:
        def display(self):
            print("BaseClass")
            
    class ChildClass(BaseClass):
        def display(self):
            print("ChildClass")

在上面的示例中,我们定义了一个基类 BaseClass 和一个子类 ChildClass,后者重载了父类的 display() 方法。

现在我们可以创建一个 ChildClass 的实例,并使用它的 display() 方法,可以看到它将使用子类的实现:

    child = ChildClass()
    child.display()

这将产生以下输出:

    ChildClass

Python 中的抽象类

在 Python 中,我们可以使用 abc 模块来定义抽象基类。抽象基类是指它本身不能被实例化,只能作为其他类的基类来使用。抽象基类可以定义一个或多个抽象方法,这些方法必须被子类实现。

以下示例展示了如何定义抽象基类:

    from abc import ABC, abstractmethod
    
    class BaseClass(ABC):
        @abstractmethod
        def display(self):
            pass
            
    class ChildClass(BaseClass):
        def display(self):
            print("ChildClass")

在上面的示例中,我们使用 ABC 模块来定义了一个抽象基类 BaseClass,并定义了一个抽象方法 display()。在子类 ChildClass 中,我们实现了这个抽象方法。

现在我们可以创建一个 ChildClass 的实例,并使用它的 display() 方法:

    child = ChildClass()
    child.display()

这将产生以下输出:

    ChildClass

如果我们不实现子类的 display() 方法,将会产生 AttributeError。

总结

Python 中的继承是一种面向对象编程技术,可以使得子类可以使用父类的属性和方法。Python 中还支持多继承,可以让子类同时继承多个基类。子类可以重载父类的方法,也可以定义抽象基类和抽象方法。

使用继承可以实现代码重用和代码扩展,使得程序编写更加灵活。在使用继承时,需要注意避免继承链过长,并谨慎使用多重继承。在对基类和子类进行方法的重载和定义时,需要注意继承的可访问性和继承的语法规则。