#博学谷IT学习技术支持#
目录
一、前言
上周咱们一起学习了私有属性和公有属性的知识,这次咱们继续学习python中另外一个关键知识继承和重写,在生活中,我们想到继承即为子继承父,在python中继承描述的是类与类之间的关系,目的是为了减少代码的冗余,相同的代码不需要进行重复的书写,我们在继承了父类之后,可以直接使用父类中定义的公有属性和方法。
好了,接下来咱们直接进行干货分享吧。
二、继承
1. 继承描述的是类与类之间的关系
2. 继承的好处: 减少代码的冗余(相同的代码不需要多次重复书写), 可以直接使用
继承语法
# class A(object):
class A: # 没有写父类,但也有父类object, object 类是 Python 中最顶级(原始)的类
pass
class B(A): # 类 B, 继承类 A
pass
术语:
1. A 类, 称为是 父类(基类)
2. B 类, 称为是 子类(派生类)单继承: 一个类只继承一个父类,称为单继承
继承之后的特点:
子类(B)继承父类(A)之后, 子类的对象可以直接使用父类中定义的公有属性和方法
案例
1. 定义一个 动物类, 吃
2. 定义一个 狗类, 继承动物类, 吃, 叫
3. 定义一个 哮天犬类, 继承 狗类
# 1. 定义一个 动物类, 吃
class Animal:
def eat(self):
print('要吃东西')
# 2. 定义一个 狗类, 继承动物类, 吃, 叫
class Dog(Animal):
def bark(self):
print('汪汪汪叫....')
# 3. 定义一个 哮天犬类, 继承 狗类
class XTQ(Dog):
pass
# 创建 动物类的对象
# ani = Animal()
# ani.eat()
# 创建狗类对象
# dog = Dog()
# dog.eat() # 调用父类中的方法
# dog.bark() # 调用自己类中方法
# 创建哮天犬类对象
xtq = XTQ()
xtq.bark() # 调用 父类 Dog 类的方法
xtq.eat() # 可以调用 父类的父类中的方法
结论
python 中 对象.方法() 调用方法
1. 先在自己的类中去找有没有这个方法 如果有,直接调用
2. 如果没有去父类中 查找, 如果有,直接调用
3. 如果没有, 去父类的父类中查找, 如果有直接调用
4. 如果 object 类中有,直接调用, 如果没有,代码报错
三、重写
重写: 在子类中定义了和父类中名字相同的方法, 就是重写
重写的原因: 父类中的方法,不能满足子类对象的需求,所以重写
重写之后的特点: 调用子类字节的方法, 不再调用父类中的方法
重写的方式:
>1. 覆盖(父类中功能完全抛弃,不要,重写书写)
>2. 扩展(父类中功能还调用,只是添加一些新的功能) (使用较多)
3.1覆盖
1. 直接在子类中 定义和父类中名字相同的方法
2. 直接在方法中书写新的代码
class Dog:
def bark(self):
print('汪汪汪叫.....')
class XTQ(Dog):
# XTQ 类bark 方法不再是汪汪汪叫, 改为 嗷嗷嗷叫
def bark(self):
print('嗷嗷嗷叫...')
xtq = XTQ()
xtq.bark()
3.2扩展父类中的功能
1. 直接在子类中 定义和父类中名字相同的方法
2. 在合适的地方调用 父类中方法 super().方法()
3. 书写添加的新功能
class Dog:
def bark(self):
print('汪汪汪叫.....')
print('汪汪汪叫.....')
class XTQ(Dog):
# XTQ 类bark 方法不再是汪汪汪叫, 改为
# 1. 先 嗷嗷嗷叫(新功能) 2, 汪汪汪叫(父类中功能) 3. 嗷嗷嗷叫 (新功能)
def bark(self):
print('嗷嗷嗷叫...')
# 调用父类中的代码
super().bark() # print() 如果父类中代码有多行呢?
print('嗷嗷嗷叫...')
xtq = XTQ()
xtq.bark()
四、结尾
上面就是python中继承与重写的知识分享了,继承之后可以重写,重写时可以继承父类的方法,扩展新方法,大家灵活运用掌握,对后面的学习有很大的帮助。