继承、多态

class A:

    print("First A")

    def __init__(self,a):

        print("A")

    print("First A1")   

class B:

    print("First B")

    def __init__(self,a,b):

        print("B")

class D(A,B):# 当我们在实例化子类时,则会先初始化继承的父类

    print("D")

    def __init__(self,a,b,c):

        super(D,self).__init__(a)

        self.c=c

d = D(1,2,3) #实例化子类

# First A

# First A1

# First B

# D

# A   

(1) 一个类可以不继承任何类,也可以继承一个类或多个类;

(2) 无论父类中有多少个__init__方法,只会执行其中1个;

(3) 子类可以覆盖父类中的属性或方法;

(4) 当我们在实例化子类时,则会先初始化继承的父类,父类的执行顺序按照从左到右顺序执行;


多态(polymorphic)必须满足三个条件:

(1) 继承;

(2) 重写;

(3) 父类对象指向子类实例;


class Animal:

    def __init__(self, name):

        self.name = name

    def talk(self): 

        pass


    @staticmethod ####如果硬要说多态,建议使用静态方法来处理,而非普通函数

    def animal_talk(obj):

        obj.talk()

class Cat(Animal):

    def talk(self):

        print('喵!')

class Dog(Animal):

    def talk(self):

        print('wang')

d = Dog("小黑")

c = Cat("小白")

# def animal_talk(obj):

#    obj.talk()    ###这也是一个能实现功能的函数,因此python多态才具有争议性

Animal.animal_talk(c)

Animal.animal_talk(d)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容