''' 什么是继承? 专业角度:B继承A类,B就叫做A的子类,A叫做B的父类,基类,超类。B类以及B类的对象 使用A类的所有属性以及方法 字面意思:继承就是继承父母的所有资产。 单继承,多继承 继承的优点:1、节省代码 2、增强耦合性 3、代码规范 继承分为单继承和多继承 Person Dog Cat :子类,派生类 Animal :父类,基类,超类 单继承:使用。 多继承:有区别 ''' # class Animal: # def __init__(self,name,age,sex): # self.name = name # self.age = age # self.sex = sex # # class Person(Animal): # pass # # class Dog(Animal): # pass # # class Cat(Animal): # pass # # class A: # pass # class Animal: # # live = '有生命的' # def __init__(self,name,age,sex): # self.name = name # self.age = age # self.sex = sex # # def eat(self): # print('动物都要进食') # # # class Person(Animal): # # def eat(self): # print('人类都需要进食') #1、从类名执行父类的属性。 # print(Person.__dict__) # print(Person.live) # print(Person.eat(1)) # 2、从对象执行父类的一切,实例化对象一定会的三件事,一定会执行__init__ # p1 = Person('dab',21,'laddy boy') # print(p1.__dict__) # p1.eat() # print(p1.live) # Person.live='111' # print(Person.live) #注意:子类及子类对象只能调用父类的属性以及方法,不能操作(增删改)。 #子类将父类的方法覆盖了,(重写父类方法) # p1.eat = '111' # print(p1.eat) #对象查找顺序先从对象空间找名字,子类找名字,父类找名字。 class Animal: live = '有生命的' def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('动物都要进食') #如何既要执行父类属性,有要执行子类属性 class Person(Animal): def __init__(self,name,age,sex,hobby): #方法一: # Animal.__init__(self,name,age,sex) # 方法二: super().__init__(name,age,sex) self.hobby = hobby def eat(self): super().eat() print('人类都需要进食') p1 = Person('coco',22,'不详','吹牛逼') print(p1.__dict__) p1.eat()
class God: def __init__(self,name): self.name = name def climb(self): print('神仙累了也要爬树') def flt(self): print('会飞') class Monkey: def __init__(self,sex): self.sex = sex def climb(self): print('爬树') class MonkeySun(Monkey,God): pass #多继承的难点就是继承顺序问题 qtds = MonkeySun('齐天大圣') qtds.climb() ''' 多继承: 面向对象: python2.2 之前都是经典类,python2.2直至python2.7之间存在两种类型:经典类,新式类 经典类 :基类不继承object,查询规则依靠深度优先的原则 新式类:基类必须继承object,查询规则:mro算法 python3x只有新式类 '''