Python进阶_继承

这篇博客探讨了Python中的继承概念,包括单一继承和多继承。通过创建`Pet`、`Dog`和`Cat`类展示了如何实现继承,以及如何重写和扩展父类方法。`Dog`类继承自`Pet`并添加了年龄和性别属性,同时重写了`eat`方法。`Cat`类则实现了多继承,从`Pet`和`Animal`两个父类中继承,并调用了父类的方法。博客还提到了`super()`关键字在继承中的作用以及方法调用顺序。
摘要由CSDN通过智能技术生成

继承

# @Time:2021/1/5 16:48
# @Author:李 祥
# @File:继承.py
# @Software:PyCharm

# 继承
# 面临问题:
# 相似类型的定义过程中,大量重复性的代码

# 继承的概念:
# 在类名后面添加小括号,其中填写继承自哪个类型。
# 对相同的属性或方法进行抽象,形成类别的提炼或分拆。

# 好处:
# 让类的定义具有更好的扩展性。它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

class Pet:

    def __init__(self, name):
        self.name = name
        print(f"一个名叫{self.name}的宠物出生了")

    def eat(self):
        print(f"{self.name}在吃东西...")

    def sleep(self):
        print(f"{self.name}在睡觉...")

    def __bark(self):
        print("叫一声")


class Dog(Pet):  # 子类名(父类名)
    # 继承了 pet所有有 pet除私有外的所有类/属性
    def __init__(self, name, age, sex):
        # self.name = name
        # print(f"一个名叫{self.name}的宠物出生了")
        super(Dog, self).__init__(name)  # 替换上面
        #     类型  对象
        # super().__init__(name)    # 两种写法
        self.age = age
        self.sex = sex

    # 重写/覆盖
    # 子类和父类有相同名称的方法。可以理解为子类对于父类行为的扩展或补充
    def eat(self):
        print("吃骨头")

    # 追加内容
    # 可以使用super()调用父类的方法
    def sleep(self):
        super().sleep()
        print("做个美梦")


# 调用顺序 先调自己的,没有的话再调父类的
s = Dog("SS", 12, "雄")
s.eat()
s.sleep()
# s.__bark  # 私有无法继承

print("-" * 50)


# 多继承
# 子类可以有多个父类
class Fulei(object):    # object 终极父类

    def eat(self):
        print("父类的父类")


class Animal(Fulei):
    test = "测试继承"

    # def eat(self):
    #     print("Animal的eat方法")


# class Cat(Pet, Animal):   # 横向顺序递减 纵向顺序递减
class Cat(Animal, Pet):
    def eat(self):
        super().eat()


c = Cat("cat")
print(c.test)
c.eat()
# print(Cat.mro())    # 调用顺序
print("-" * 50)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值