面向对象的特征之一继承。通俗点讲就是儿子会继承父亲的财产。在开发中讲解就是子类会继承父类(也有叫超类、基类)的所有方法。
在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() 游来游去 >>> #由输出我们可以看出鲨鱼继承了鱼类的属性,但是这个可能不是我们想要的,当然这个例子也许不太恰当,但是最终目的是想说尽量少用多继承