【Python进阶篇 面向对象程序设计(3) 继承】

文章目录

在面向对象编程中,被继承的类称为父类,新的类称为子类。

1、继承的基本语法

(1)单继承

bash 复制代码
# 继承
# 父类
class Fruit:
    color = '绿色'

    def harvest(self, color):
        print("水果是:" + color + "的!")
        print("水果原来是:" + Fruit.color + "的!")


# 子类
class Apple(Fruit):
    color = '红色'

    def __init__(self):
        print("我是苹果")


class Orange(Fruit):
    color = '橙色'

    def __init__(self):
        print("\n我是橘子")


apple = Apple()
apple.harvest(apple.color)
orange = Orange()
orange.harvest(orange.color)

(2)多重继承

bash 复制代码
    class 父类1:
    pass

class 父类2:
    pass

class 子类(父类1, 父类2):  # 子类继承多个父类
    pass 

2、方法重写

子类可以覆盖父类的方法,实现自定义行为。

bash 复制代码
class Animal:
    def speak(self):
        return "通用叫声"

class Dog(Animal):
    def speak(self):  # 重写父类方法
        return "Woof!"

3、super()函数

调用父类的方法(常用于初始化和扩展功能)。

bash 复制代码
class Fruit:
    def __init__(self, color="绿色"):
        Fruit.color = color

    def harvest(self):
        print("水果原来是:" + Fruit.color + "的!")


class Apple(Fruit):
    def __init__(self):
        print("我是苹果!")


apple = Apple()
apple.harvest()

直接运行上面的代码有报错:

原因是在子类的__init__()方法中不会自动调用父类的__init__()方法,需要使用super()函数。

bash 复制代码
class Fruit:
    def __init__(self, color="绿色"):
        Fruit.color = color

    def harvest(self):
        print("水果原来是:" + Fruit.color + "的!")


class Apple(Fruit):
    def __init__(self):
        print("我是苹果!")
        super().__init__()  ## 调用父类的__init__()方法


apple = Apple()
apple.harvest()
相关推荐
七月稻草人1 分钟前
CANN生态ops-nn:AIGC的神经网络算子加速内核
人工智能·神经网络·aigc
User_芊芊君子11 分钟前
CANN图编译器GE全面解析:构建高效异构计算图的核心引擎
人工智能·深度学习·神经网络
沈浩(种子思维作者)12 分钟前
系统要活起来就必须开放包容去中心化
人工智能·python·flask·量子计算
云边有个稻草人14 分钟前
CANN:解构AIGC底层算力,ops-nn驱动神经网络算子加速
人工智能·神经网络·aigc·cann
爱吃大芒果15 分钟前
CANN神经网络算子库设计思路:ops-nn项目的工程化实现逻辑
人工智能·深度学习·神经网络
2301_7903009617 分钟前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
weixin_4997715518 分钟前
C++中的组合模式
开发语言·c++·算法
初级代码游戏18 分钟前
套路化编程 C# winform 自适应缩放布局
开发语言·c#·winform·自动布局·自动缩放
_waylau22 分钟前
鸿蒙架构师修炼之道-架构师的职责是什么?
开发语言·华为·harmonyos·鸿蒙
2的n次方_33 分钟前
CANN Ascend C 编程语言深度解析:异构并行架构、显式存储层级与指令级精细化控制机制
c语言·开发语言·架构