目录
前言类继承mro总结前言
版本:
windows 10.0python 3.8类
在Python数字比较与类结构中有简略提到类,那么什么是类呢?
(资料图)
在python中定义一个类很简单,使用关键字class
就能实现。
class Animal: pass
如何使用它,在类结构中称作实例化。
animal = Animal()
这样,就有了一个Animal的实例。
继承
类的其中一个特性就是能够继承,把Animal
类丰富下,将其作为基类:
class Animal: property_ = "能够思考" def __init__(self, name, age, value): self.name_ = name self.age_ = age self.val_ = val
在这里面,property_作为类属性,无需实例化就能使用,而__init__下的self.name_, self.age_和self.val_需要在实例化后才能使用,且这里__init__需要传入参数,其中self用来指代类本身,不作为传参值。
print(Animal.property_) # 输出:能够思考 print(Animal.name_) # 引发AttributeError错误 a = Animal("阿黑", 12, 70) print(a.property_) # 能够思考 print(a.name_) # 阿黑 print(a.age_) # 12 print(a.val_) # 70 复制代码
Animal
类可以正常使用,再写一个Monkey
类,继承Animal
类。
class Monkey(Animal): pass
在Monkey
后面调用Animal
类,继承了其属性及方法,也可通过实例化,查看Monkey
实例的属性。
print(Monkey.property_) # 类属性: 能够思考 m = Monkey("阿黄", 15, 40) print(m.name_) # 阿黄 print(m.age_) # 15 print(m.val_) # 40
当然也能继承类,对其已有的方法进行改写,这里再定义一个Cat
类。
class Cat(Animal): def __init__(self, name, age): self.name_ = "我是" + name self.age_ = age
Cat
类继承后对__init__进行了改写,修改了name_,并且删除了val_。
print(Cat.property_) # 类属性:能够思考 c = Cat("小花", 6) print(c.name_) # 我是小花 print(c.age_) # 6 print(c.val_) # 引发AttributeError报错
对于类属性还是能使用,不见的val_再调用就会引发报错。
除此之外,如果想在保留基类的属性基础上增加属性,可以用super()
进行处理:
class Fish(Animal): def __init__(self, name, age, val, env): super().__init__(name, age, val) self.env_ = env
在实例化Fish
类时,需要多传入一个生活环境env参数:
f = Fish("小鲤", 2, 57, "水里") print(f.env_) # 水里
mro
mro
的含义为方法解析顺序
,在类的继承中,明白解析顺序是尤为重要的,对于上述几个类可以简单看下mro的顺序情况。
Animal.mro() # [__main__.Animal, object] Monkey.mro() # [__main__.Monkey, __main__.Animal, object] Cat.mro() # [__main__.Cat, __main__.Animal, object] Fish.mro() # [__main__.Fish, __main__.Animal, object]
mro的解析顺序是从左至右,越在左边优先级越高,可以看到最先解析的是当前类本身,再是继承的上一个类,最后是原生object
类。上述罗列的所有类,继承关系都很简单,mro的顺序也简单明了。
总结
到此这篇关于Python中类的mro与继承关系详解的文章就介绍到这了,更多相关Pythonmro内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单