python,继承

  面向对象的特征之一继承。通俗点讲就是儿子会继承父亲的财产。在开发中讲解就是子类会继承父类(也有叫超类、基类)的所有方法。

  在Python中子类继承父类只需要用()将父类放进去即可,如class Dog(Dnimal[,Dnimal1...]),可以多继承

class Fish:
    def __init__(self):
        print("首先你得是一只鱼")
    def swim(self):
        print("游来游去")
    def eat(self):
        print("吃吃吃")

class GoldFish(Fish):
    pass #啥也没有

class Salmon(Fish):
    pass

class Shark(Fish):
    def __init__(self):
        self.hungry = True

    def eat(self):
        if self.hungry:
            print("狠狠吃一口")
            self.hungry=False
        else:
            print("你想撑死我。。。")


#-------------运行结果
>>> f = Fish()
首先你得是一只鱼
>>> f.eat()
吃吃吃
>>> 
>>> f2 = GoldFish()
首先你得是一只鱼
>>> f2.eat()
吃吃吃
>>> 
>>> f3 = Shark()
>>> f3.eat()
狠狠吃一口
>>> f3.eat()
你想撑死我。。。
>>> f3.swim()
游来游去
>>> 

  虽然python可以使用多继承,但是尽量要少用多继承,因为可能会造成不可预知的错误

#假设我们有一个动物类
class Animal:
    def swim(self):
        print("动物属性")
# 鱼类
class Fish:
    def __init__(self):
        print("首先你得是一只鱼")
    def swim(self):
        print("游来游去")
    def eat(self):
        print("吃吃吃")
# 鲨鱼继承鱼类和动物类~~~~这里是为了演示,其实动物类可以作为鱼类的基类
class Shark(Fish,Animal):
    def __init__(self):
        self.hungry = True

    def eat(self):
        if self.hungry:
            print("狠狠吃一口")
            self.hungry=False
        else:
            print("你想撑死我。。。")

#我们看到了动物类和鱼类都有eat()方法,那么我们到底要继承哪一个,
>>> f = Shark()
>>> f.swim()
游来游去
>>> 
#由输出我们可以看出鲨鱼继承了鱼类的属性,但是这个可能不是我们想要的,当然这个例子也许不太恰当,但是最终目的是想说尽量少用多继承
原文地址:https://www.cnblogs.com/pengpengzhang/p/8711556.html