继承、多态

2018-02-07  本文已影响0人  p712long

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)

上一篇下一篇

猜你喜欢

热点阅读