继承:Python继承
一、类的继承
class Animal: breath = '呼吸' def __init__(self, name, sex, age): self.name = name self.sex = sex self.age = age def eat(self): print(self) print('动物都需要进食....') class Person(Animal): # 括号里面的 父类,基类,超类 括号外面的 子类,派生类. pass class Cat: pass class Dog: pass p1 = Person('alex', 'laddyboy', 1000) print(p1.breath) print(p1.__dict__)
二、对象执行先执行本类中的属性或方法,如果没有在父类中查找。
# 多继承:
# 新式类: 遵循广度优先.
# 经典类: 遵循深度优先.
class Animal: def __init__(self, name, sex, age): self.name = name self.sex = sex self.age = age def eat(self,a1): print('%s吃%s' % (self.name,a1)) def drink(self): print('%s喝东西' % (self.name)) class Cat(Animal): def miaow(self): print('喵喵叫') # def eat(self): # 只执行自己类中的方法 # print(666) c = Cat('猫', '男', 20) print(c.eat("鱼"))
三、super在子类中执行父类方法
class Person: ROLE = 'CHINA' print(ROLE) def func(self): print("123456") class B(Person): def func(self): super(B, self).func() # Person.func(self) print('789') a = B() # print(Person.func) print(a.func())
继承:经典继承、新式继承
class A: def func(self): print("A") class B(A): def func(self): super().func() print("B") class C(A): def func(self): super().func() print("C") class D(B,C): def func(self): super().func() print("D")
# 遵循mro算法 d = D() d.func()
1,面向对象的三大特性是什么?
继承 多态 封装.
2,什么是面向对象的新式类?什么是经典类?
3,面向对象为什么要有继承?继承的好处是什么?
优化代码,节省代码.
提高代码的复用性.
提高代码的维护性.
让类与类之间发生关系.
4,面向对象的广度优先,深度优先分别是什么?
5,面向对象中super的作用。
在子类中调用父类的方法.
二,代码题(通过具体代码完成下列要求):
1,
a,定义一个父类Animal,在构造方法中封装三个属性,姓名,性别,年龄,
再给其添加一个eat的方法,方法中显示%s正在吃饭(%s是哪个对象调用此方法,显示哪个对象名字)。
b,定义两个子类Person,Dog,全部继承这个父类Animal.
c,Person类中,有构造方法,封装一个皮肤的属性,有eat方法,方法中显示人类正在吃饭。
d,Dog类中,有构造方法,封装一个毛色的属性,有eat方法,方法中显示狗狗正在吃饭。
上面这几个类创建完成之后,完成下列要求:
①: 实例化一个人类的对象,让其只封装皮肤属性。
②: 实例化一个人类的对象,让其封装姓名,性别,年龄,皮肤四个属性。
③: 实例化一个狗类的对象,让其只封装毛色属性。
④: 实例化一个狗类的对象,让其封装姓名,性别,年龄,毛色四个属性。
⑤: 实例化一个人类的对象,让其只执行父类的eat方法(可以对人类代码进行修改)。
⑥: 实例化一个狗类的对象,让其既执行父类的eat方法,又执行子类的eat方法。

浙公网安备 33010602011771号