2.28继承
#__authon: yeweijian.scarfgw
#date: 2020/2/28
#继承: 这里是对象的继承,对象属性表现上来讲可以继承,但是本质上只是继承了父类的方法;
# 子类继承父类的公有属性本质上是因为继承了父类的init方法的问题 后续方法重写中会提及
#注意父类的私有属性私有方法都不能继承
#注意父类子类皆有某一个方法是,都会优先使用子类中的方法
class Animal: def __init__(self,name): print('对象的初始化') self.name = '这里是animal的name属性' def eat(self): print('能吃的动物') def run(self): print('能跑的动物') class Cat(Animal): def __init__(self): print('猫初始化') def catch(self): print('---抓老鼠---') cat = Cat() print(cat) print(cat.name) #此处报错!!!!! #output: # 猫初始化 # File "C:/Users/Administrator/PycharmProjects/untitled3/study/2.28继承.py", line 26, in <module> #<__main__.Cat object at 0x00000000026F9188> # print(cat.name) #AttributeError: 'Cat' object has no attribute 'name' #报错解析:对象实例化中,当继承父类中存在init方法,本身还存在init方法时,优先调用自身的init方法 """-------------------------------------------------------------------------------""" class Dog(Animal): def __init__(self,name): self.name = name print('狗的初始化') def set_name(self): print('狗的名字是%s'%self.name) d = Dog('小白') d.eat() d.run() d.set_name() """狗的初始化 能吃的动物 能跑的动物 狗的名字是小白 小白 """ class Zangao(Animal): def fight(self): print('好斗的属性') z = Zangao('xiaohei') z.eat() '''output: 对象的初始化 能吃的动物''' #单个继承:当前类没有方法,会寻找父类中的方法