python面向对象继承
class A(object):pass # 括号中可称为父类,基类,超类 class B:pass # 父类,基类,超类 class A_son(A,B):pass # 子类,派生类 class AB_son(A):pass # 子类,派生类 # 一个类 可以被多个类继承 # 一个类 可以继承多个父类 —— python里 print(A_son.__bases__) #查看父类 # print(AB_son.__bases__) # print(A.__bases__) # python3 -新式类# 没有继承父类默认继承object,object是所有类的父类
class Animal: # def __init__(self,name,aggr,hp): # self.name = name # self.aggr = aggr # self.hp = hp # # def eat(self): # print('吃药回血') # self.hp+=100 # # class Dog(Animal): # def __init__(self,name,aggr,hp,kind): # Animal.__init__(self,name,aggr,hp) # # self.kind = kind # 派生属性 # def eat(self): # Animal.eat(self) # 如果既想实现新的功能也想使用父类原本的功能,还需要在子类中再调用父类 # self.teeth = 2 # def bite(self,person): # 派生方法 # person.hp -= self.aggr
父类中没有的属性 在子类中出现 叫做派生属性
父类中没有的方法 在子类中出现 叫做派生方法
只要是子类的对象调用,子类中有的名字 一定用子类的,子类中没有才找父类的,如果父类也没有报错
如果父类 子类都有 用子类的
如果还想用父类的,单独调用父类的:
父类名.方法名 需要自己传self参数
super().方法名 不需要自己传self 当有棱形继承时super调用方法的顺序安找棱形继承的顺序调用。
正常的代码中 单继承 === 减少了代码的重复
继承表达的是一种 子类是父类的关系