php 魔术方法 多继承,Python继承、多继承、魔术方法

继承和多继承的概念和使用

super的用法

__str__   __repr__   __call__

多继承方法解析顺序和Mix-in开发模式

魔术方法原理和作用

继承

定义类的时候,在类名后面的括号里填继承的类的类名

a49b77ad71958373fb2513c438347c80.png

顶级基类object

__bases__:查看类的直接父类

2e0f2cce62d5d022b0352dd30652a73b.png

继承搜索

访问类的属性或方法 --> 如果找不到,转到其父类中查找 --> 如果再找不到,转到其父类的父类中查找

17cb14fb2be12ead40d682e68637cde0.png

多继承

当继承多个父类时,如果父类中有相同的方法,那么子类会优先使用最先被继承的方法

b13bab5aba91df11cd12a97056f62b0f.png

50253f4573a8adc5efcc7279ee99eafb.png

重写

当子类继承父类之后,如果子类不想使用父类的方法,可以通过重写来覆盖父类的方法

81cb33be708f8c804cdabc37edaa0e73.png

3805b47f2131ba6d69a9f95a6eddb4cb.png

super用法

重写父类方法之后,又需要使用父类的方法

方法一:父类名.方法名

方法二:super 函数可以调用父类的方法

c9d66766afa35fb3606c5052debdc902.png

4291fc78af6cc64a11aa3fb9c7aa925d.png

类在生成时会自动生成方法解析顺序

可以通过调用类的__mro__属性或者mro方法来查看类的继承关系

object是所有类的父类

a570749c2812e7b238064abcfce75b82.png

e43d44149bae29e3a596efc1df58da3a.png

Mix - in 设计模式

由多个模块组成一个整体

最好,多继承就一层,且是最后一层

魔术方法

一种特殊的方法,前后有两个下划线

特点:不需要人工调用,在特定的时候自动执行

魔术方法之运算方法

0324e54231d4c1d6586c7d2a08d5e243.png

96b785d65ef9a77c2a39bf2b4e68187a.png

不同运算符调用不同的魔术方法(了解即可)

__add__ # x+y    __sub__ # x-y    __mul__ # x*y    __mod__ # x%y

__iadd__ # x+=y   __isub__ # x-=y  __imul__ # x*=y  __imod__ # x%=y

__radd__  # y+x    __rsub__  # y-x

str和repr原理(str优先级大于repr)

在python中,str和repr方法在处理对象的时候,分别调用的是对象的__str__和__repr__方法

30ef47b1aa6fdfad228eb3fdd800d1c7.png

2cc44db49adc89ce76ea20789826baa7.png

print打印对象,调用str函数,如果对象没有定义__str__方法,则调用__repr__方法处理

0113c41bbfa70dc5fd87644449b17953.png

83dec8464621fd9b2857708b539166c3.png

b0a83fac0d9749d43bcb1d030d120dab.png

075b9a1be50acc600a8d350710927f33.png

在交互模式下,直接输出对象,显示 __repr__ 的返回值

397bab073536c791169b597a1e87e847.png

__call__方法

正常情况下,实例是不能像函数一样被调用的,要想实例能够被调用,就需要定义 __call__  方法

9b8bffbc12ccd5d1547ef6df941fd1a5.png

16725ee9a8ba18c5bf56330c6aed5b2e.png

类中的一些查询相关信息的方法(了解既可)

__class__ 查看类名                         格式: 实例.__class__

__dict__ 查看全部属性、返回属性和属性值键值对形式         格式:实例.__dict__

__doc__ 查看对象文档,即类中(用三个引号引起来的部分)        格式:类名.__dict__

__bases__ 查看父类                        格式:类名.__base__

.__mro__ 查看多继承的情况下,子类调用父类方法时,搜索顺序      格式:子类名.__mro__    实例.__class__.__mro__

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值