Python入门基础篇 No.80 —— 重写__str__()方法_多重继承_MRO()

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学习资料!!!

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值