网络工程师学Python-继承

举报
wljslmz 发表于 2023/04/20 17:59:50 2023/04/20
【摘要】 在 Python 中,继承是一种重要的面向对象编程概念。通过继承,我们可以定义一个新的类,它继承了现有类的属性和方法。这种代码重用可以使我们更高效地编写程序,并提高代码的可读性和可维护性。 基本语法在 Python 中,继承是通过将父类的名称作为子类的参数来实现的。例如,下面的代码定义了一个名为 Rectangle 的子类,它继承了 Shape 类的属性和方法。class Shape: ...

在 Python 中,继承是一种重要的面向对象编程概念。通过继承,我们可以定义一个新的类,它继承了现有类的属性和方法。这种代码重用可以使我们更高效地编写程序,并提高代码的可读性和可维护性。

基本语法

在 Python 中,继承是通过将父类的名称作为子类的参数来实现的。例如,下面的代码定义了一个名为 Rectangle 的子类,它继承了 Shape 类的属性和方法。

class Shape:
    def \__init\__(self, x, y):
        self.x = x
        self.y = y
        
    def area(self):
        pass
        
class Rectangle(Shape):
    def \__init\__(self, x, y, width, height):
        super().\__init\__(x, y)
        self.width = width
        self.height = height
        
    def area(self):
        return self.width * self.height

在上面的代码中,我们定义了一个名为 Shape 的父类,它包含了一个 x 和一个 y 属性,以及一个名为 area() 的方法。然后,我们定义了一个名为 Rectangle 的子类,它继承了 Shape 类,并添加了一个 width 和一个 height 属性,以及一个重写的 area() 方法。

请注意,我们在子类的 _init_() 方法中使用了 super()._init_(),它调用了父类的构造函数,并将 x 和 y 参数传递给它。这确保了子类在实例化时也会初始化父类的属性。

方法重写

在 Python 中,子类可以重写父类的方法。这使得子类能够自定义其行为,并覆盖继承自父类的默认实现。

class Square(Rectangle):
    def \__init\__(self, x, y, size):
        super().\__init\__(x, y, size, size)

在上面的代码中,我们定义了一个名为 Square 的子类,它继承了 Rectangle 类,并重写了其 _init_() 方法,将 width 和 height 参数都设置为 size。这使得 Square 类可以像正方形一样使用,而不是矩形。

多重继承

Python 还支持多重继承,这意味着一个类可以继承多个父类的属性和方法。这使得我们可以组合不同类的功能,并将其合并到一个新的类中。

class Employee:
    def \__init\__(self, name, salary):
        self.name = name
        self.salary = salary
        
    def calculate_pay(self):
        pass
        
class SalesPerson(Employee):
    def calculate_pay(self):
        return self.salary + self.commission
        
class Manager(Employee):
    def calculate_pay(self):
        return self.salary + self.bonus
        
class SalesManager(SalesPerson, Manager):
    def calculate_pay(self):
        return super().calculate_pay() + self

在上面的代码中,我们定义了一个名为 Employee 的父类,它包含了一个名为 name 和一个名为 salary 的属性,以及一个名为 calculate_pay() 的方法。然后,我们定义了两个子类,SalesPerson 和 Manager,它们分别重写了父类的 calculate_pay() 方法。

最后,我们定义了一个名为 SalesManager 的子类,它同时继承了 SalesPerson 和 Manager 类。在这种情况下,当我们调用 calculate_pay() 方法时,Python 将从左到右依次搜索父类,直到找到一个具有相应方法的类。在这个例子中,Python 将先搜索 SalesPerson 类,然后是 Manager 类。

请注意,我们使用 super() 函数来调用父类的方法。这确保了所有父类的 calculate_pay() 方法都会被调用,而不是只调用其中一个。

总结

继承是面向对象编程的重要概念之一,可以帮助我们编写更高效和可维护的代码。在 Python 中,我们可以通过将父类的名称作为子类的参数来实现继承,并使用方法重写和多重继承来定制子类的行为。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。