Python之类和对象【三】---继承(2.1-多继承,多重继承,多态)

文章目录


前言

记录多继承,多态的含义,理清思路。


一、多继承

含义:一个子类可以继承多个父类。

class 子类(父类1, 父类2.....):
    pass

一般这种情况,父类之间是没有什么关联,独立的,实现不同功能。

可以了解的知识:

涉及:新式类和旧式类。 有兴趣可以了解
     菱形继承问题。

二、多重继承

gggrand - grand - parent - son

三、多态

其实在Python中是没有多态的,多态这个概念是Java中的。

# 判断一个对象,是否为某一个类的对象。
isinstance(对象名, 类名))
# 子类的对象,也是父类的对象。

鸭子类型:

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。

多态:父类类型,接收子类对象。(类型:指数据类型;接收:是参数接收实际的值,也就是赋值的意思)

多态这种用法,也就是在继承中才有。


java:定义函数的任何参数,必须指明类型。在java当中一定是在继承的情况下会用。

python可以说是没有动态,也可以说是处处皆多态。

举例:

class Base:
    def __init__(self, kind, name):
        self.kind = kind  # 属性赋值
        self.name = name  # 属性赋值

    def eat(self, food):
        print("{} 要吃 {}!!!".format(self.name, food))

    def drink(self):
        print("要喝水了!!!")

class Dog(Base):

    def __init__(self, kind,name,color, age=1):
        super().__init__(kind,name)
        self.color = color  # 属性赋值
        self.age = age  # 属性赋值
        self.sex = None # 当属性的初始值不确定的时候,可以设置为None

    def eat(self, food):
        print("狗吃",food)

    def bark(self):
        print("狗嗷嗷的叫!!!")
        print("注意警惕!!")

class Cat(Base):

    def __init__(self, kind,name,color, age=1):
        super().__init__(kind,name)
        self.color = color  # 属性赋值
        self.age = age  # 属性赋值
        self.sex = None # 当属性的初始值不确定的时候,可以设置为None



    def bark(self):
        print("狗嗷嗷的叫!!!")
        print("注意警惕!!")

class People:

    def eat(self, food):
        print("人吃", food)

    def __init__(self):
        pass



# 小小菲的狗 - 泰迪、棕色、summer、一岁、母的
xxf_dog = Dog("泰迪", "summer", "棕色", 2)
xxf_cat = Cat("英短", "小白", "黑白色", 3)
# 判断一个对象,是否为某一个类的对象。
# 子类的对象,也是父类的对象。
# print(isinstance(xxf_dog, Dog))
# print(isinstance(xxf_dog, Base))

# 参数形参名类型:类名。申明/希望你传进来的是这个类的对象。
def hello(object_name):
    print(object_name)
    # 调用object_name的eat方法。
    # python当中只要传进来的参数,有eat这个方法。就可以了。
    res = object_name.eat("美食")
    print(res)

# hello(xxf_dog)
# hello(xxf_cat)
hello(People())

转载:

python什么是鸭子类型_python鸭子类型_杰森斯坦森1150的博客-CSDN博客


总结

暂无

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值