python 面向对象基础梳理三 继承派生与组合
Posted brave1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 面向对象基础梳理三 继承派生与组合相关的知识,希望对你有一定的参考价值。
什么是继承
继承是一种创建新类的方式,是一种什么是什么的关系,继承的功能之一就是解决代码重用的问题,继承是一种创建新类的方式,在python 中,新建的一个类可以继承一个或者多个父类,父类由可以成为基类或者超类,新建的类称为派生类或子类。
继承的分类
继承可以分为 单继承和多继承,Python 2 和 python 3 中有经典类和新式类的区分,这里描述的是python3
示例演示
# 输入 class Pare1class: pass class Pare2class: pass class Childclass(Pare1class): pass class Childclass2(Pare1class, Pare2class): print(Childclass.__bases__) print(Childclass2.__bases__) # 输出 (<class ‘__main__.Pare1class‘>,) (<class ‘__main__.Pare1class‘>, <class ‘__main__.Pare2class‘>)
如果没有指定基类,python 会默认继承 object 类,object 是所有Python 类的基类
# 输入 print(Pare1class.__bases__) print(Pare2class.__bases__) # 输出 (<class ‘object‘>,) (<class ‘object‘>,)
继承与重用
在python 中编写类的过程中,我们编写了一个 类 A , 想要在编写一个类B ,但类B 的大部分功能与 A类似,就用到了继承了,通过继承,B 类就会继承 A类,实现A 类的功能
继承示列演示,定义一个动物类 Animal,然后在定义两个类Dog 和 Cat Dog 和Cat 继承Animal 的所有特征
class Animal: def __init__(self, name, aggressive, life_value): self.name = name self.aggressive = aggressive self.life_value = life_value def eat(self): print("%s is eating" % self.name) def sleep(self): print("%s is sleeping" % self.name) def attack(self, enemy): enemy.life_value -= self.aggressive class Dog(Animal): pass class Cat(Animal): pass d1 = Dog(‘snooppy‘, 40, 100) c1 = Cat(‘kitty‘, 30, 100) print(d1.life_value) # 100 c1.attack(d1) # c1 调用 attack print(d1.life_value) # 70 # 输出 70
派生
当然子类也可以添加新的属性或者在重新定义属性,一旦子类重新定义了自己的属性且与父类重名,那么就以子类的为准了
以上是关于python 面向对象基础梳理三 继承派生与组合的主要内容,如果未能解决你的问题,请参考以下文章