Python入门基础篇 No.80 —— 重写__str__()方法_多重继承_MRO()
前生篇:object根类_dir()查看对象属性_重写__str__()方法
后世篇:super()获得父类定义_多态
小白不看都能懂:Python之真功夫系列(全章)
前言
一、重写__str__()方法
- object 有一个__str__()方法,用于返回一个对于“对象的描述”,对应于内置函数 str()经常用于 print()方法,帮助我们查看对象的信息。__ str__()可以重写。
代码演示:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
"""将对象转化成一个字符串,一般用于print方法"""
return '名字是:{0},年龄是:{1}'.format(self.name, self.age)
p = Person('Offer', 18)
print(p)
-------------------------------
名字是:Offer,年龄是:18
二、多重继承
- Python 支持多重继承,一个子类可以有多个“直接父类”。这样,就具备了“多个父类”的特点。但是由于,这样会被“类的整体层次”搞的异常复杂,尽量避免使用。
代码演示:
# 多重继承
class A:
def a(self):
print('a')
class B:
def b(self):
print('b')
class C(B, A):
def c(self):
print('c')
cc = C()
cc.c()
cc.b()
cc.a()
---------------------
c
b
a
三、MRO()
- Python 支持多继承,如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将“从左向右”按顺序搜索。
- MRO(Method Resolution Order):方法解析顺序。 我们可以通过 mro()方法获得“类的层次结构”,方法解析顺序也是按照这个“类的层次结构”寻找的。
代码演示:
# 多重继承
class A:
def a(self):
print('a')
def say(self):
print('say A')
class B:
def b(self):
print('b')
def say(self):
print('say B')
class C(B, A):
def c(self):
print('c')
cc = C()
print(C.mro()) # 打印类的层次结构
cc.say() # 解释器寻找方法是“从左到右”的方式寻找,此时会执行B类中的say()
------------------------------------
[<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
say B
总结
以上帮各位总结好了,收藏,关注即可查收。
前生篇:object根类_dir()查看对象属性_重写__str__()方法
后世篇:super()获得父类定义_多态
小白不看都能懂:Python之真功夫系列(全章)
关注下方公众号,免费拿Python学习资料!!!