【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()
相关推荐
必须会一定会2 小时前
Agent Plugins 1.0实战:plugin.json、skills、mcp.json目录结构与迁移
开发语言·人工智能·ai编程
St_rive2 小时前
Page Object设计模式
java·开发语言·设计模式
CTA量化套保2 小时前
近期零基础量化学习:先分阶段,再用 AI 检查缺口
人工智能·python
wp123_13 小时前
硬件元器件笔记|IPX8 防水 Type‑C 母座安费诺 124018802112A 与 TONEVEE TY48086‑24A 分析
c语言·开发语言·笔记
wuyk5553 小时前
4.树:一对多的层次数据结构
开发语言·数据结构·stm32·单片机
清水白石0083 小时前
Python 死锁排查全攻略:从线程卡死到锁依赖定位与工程化修复
linux·网络·python
Elias不吃糖3 小时前
Langfuse 入门:Trace、Prompt、Dataset、Experiment、Evaluator
前端·python·prompt·langfuse
luj_17684 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
TechWayfarer4 小时前
批量查IP归属地,在线API、脚本、离线库怎么选?三种方案实测对比
网络·python·网络协议·tcp/ip