Python的继承与多继承

Python同样支持类的继承,如果一种语言不支持继承,类就没有什么意义

class A():    #这是父亲类
    def hello(self):
        print("我是父类")

class B(A):  #这是儿子类,继承了父亲的性格
    def __init__(self):
        print("我是子类")

ss = B()    #实例化B
ss.hello()  #调用父亲的类

可以看到,在定义B类的时候,括号里面加了个A,这样就写成了一个继承类,B是A的儿子,B继承了A的一切。B可以随时调用它的父亲A里面的函数。这就是继承的语法,需要注意的是,所有的类都是object的子类。

单继承和多继承:

         单继承:每个类只能继承一个类

         多继承:每个类允许继承多个类

class Fish():        #定义一个鱼类,会游泳
    def __init__(self,name):
        self.name = name
    def swim(self):
        print(self.name)
        print("我会游泳")

class Bird():       #定义一个鸟类,会飞
    def __init__(self,name):
        self.name = name
    def fly(self):
        print(self.name)
        print("我会飞")
class person():    #定义一个人类,会工作
    def __init__(self,name):
        self.name = name
    def work(self):
        print(self.name)
        print("我会工作")

class SuperMan(person,Bird,Fish):#超人,要会工作,会飞,会游泳
    def __init__(self,name):
        self.name = name

s = SuperMan("我是超人")
s.fly()
s.work()
s.swim()

这里定义了一个超人,那么既然是超人,那就要会飞,会游泳,会做人类做的事,所以很形象的解释出了一个关于多继承的例子

只要继承了一个父亲类,那么我们可以随时调用父亲里面的函数,子类继承是有顺序的,它会按照顺序来查看。关于多继承,我们不推崇这种写法,隐患很多,一旦出了bug,那么很难找出来。

类里面还有一种写法,叫组合:

class Milk():
    def __init__(self,x):
        self.num = x
class Porridge():
    def __init__(self,x):
        self.num = x

class breakfast():
    def __init__(self,x,y):
        self.milk = Milk(x)
        self.porridge = Porridge(y)
    def name(self):
        print("我今天早餐吃了{0}杯牛奶,{1}碗粥".format(self.milk.num,self.porridge.num))
ss = breakfast(2,3)
ss.name()

这就是组合,直接把需要的类放进去实例化就可以了

如果想扩展父类的构造函数,那么就有这个写法:

class B():
    def __init__(self,name):
        print("B")
        print(name)

class C(B):
    def __init__(self,name):
        B.__init__(self,name)  #首先调用父类的构造函数
        print("这是c中附加的功能")#其次再增加自己的功能

c = C("我是c")

这就扩展了父类的构造函数。

关于继承类的语法,都不难理解,主要是看自己怎么运用。

猜你喜欢

转载自blog.csdn.net/May_Xu_/article/details/81487401