Python小白学习
Python学习第十三课1. 继承2. 方法的重写3. super4. 多重继承5. 多态
Python学习第十三课
1. 继承
子类继承父类的属性和方法 想想你从你老爸那里继承的房子、和车子(负债)你老子有一个东西(属性、方法),然后你老子把这个东西传给你了,你也有了这个东西(属性、方法);这就是继承
class Fa(object):
name
= '一家之主'
def car(self
):
print('宾利车')
def house(self
):
print('别墅')
class Me(Fa
):
def car(self
):
print('甲壳虫车')
def house(self
):
print('出租屋')
me
= Me
()
me
.car
me
.house
注意:接下来的代码是老师讲解时写的,自己写的话理解还有点问题
2. 方法的重写
如果在⼦类中有和⽗类同名的⽅法,则通过⼦类实例去调⽤⽅法时,会调⽤⼦类的⽅法⽽不是⽗类的⽅法,这个特点我们称之为⽅法的重写(覆盖)当我们调⽤⼀个对象的⽅法时:
会优先去当前对象中寻找是否具有该⽅法,如果有则直接调⽤如果没有,则去当前对象的⽗类中寻找,如果⽗类中有则直接调⽤⽗类中的⽅法如果没有,则去⽗类中的⽗类寻找,以此类推,直到找到object,如果依然没有找到就报错了
class A(object):
def test(self
):
print('A.....')
class B(A
):
def test(self
):
print('B.....')
class C(B
):
pass
c
= C
()
c
.test
()
3. super
super()可以获取当前类的⽗类并且通过super()返回对象调⽤⽗类⽅法时,不需要传递self
class Animal(object):
def __init__(self
, name
, age
):
self
.name
= name
self
.age
= age
print('动物')
def sleep(self
):
print('动物会睡觉')
def run(self
):
print('动物会跑')
class Dog(Animal
):
def __init__(self
, name
, age
):
self
.name
= name
self
.age
= age
super().__init__
(self
.name
, self
.age
)
print('狗')
def sleep(self
):
print('狗会睡觉')
super().sleep
()
def run(self
):
print('狗会跑')
def speak(self
):
print('汪汪汪')
dog
= Dog
('狗', 18)
dog
.sleep
()
4. 多重继承
在Python中是⽀持多重继承的。也就是我们可以为⼀个类同时制定- 多个⽗类可以在类名的()后边添加多个类,来实现多重继承多重继承,会使⼦类同时拥有多个⽗类,并且会获取到所有⽗类中⽅法在开发中没有特殊情况,应该尽量避免使⽤多重继承。因为多重继承会让我们的代码更加复杂如果多个⽗类中有同名的⽅法,则会先在第⼀个⽗类中寻找,然后找第⼆个,找第三个…前⾯会覆盖后⾯的
class A(object):
def test(self
):
print('A....')
class B(object):
pass
class C(B
, A
):
pass
c
= C
()
c
.test
()
print(C
.__bases__
)
5. 多态
多态是⾯向对象的三⼤特性之⼀。从字⾯理解就是多种形态⼀个对象可以以不同形态去呈现⾯向对象三⼤特性
封装 确保对象中数据的安全继承 保证了对象的扩展性多态 保证了程序的灵活性
class Duck(object):
def fly(self
):
print('鸭子沿着地面飞起来了')
class Swan(object):
def fly(self
):
print('天鹅在空中翱翔')
class Plane(object):
def fly(self
):
print('飞机在云层飞翔')
def fly(obj
):
obj
.fly
()
duck
= Duck
()
fly
(duck
)
swan
= Swan
()
fly
(swan
)
plane
= Plane
()
fly
(plane
)
多态这里需要多看看,我的这里写的过于简单了。
https://blog.csdn.net/legend818/article/details/90673547 https://blog.csdn.net/qq_42784898/article/details/82809422
这是我当时理解Python的多态时看的2篇文章。大家可以去看看 我的理解更多的的是基于老师课堂上的讲解。就是我知道什么是多态也知道是怎么回事,可是我就说不出来