Python继承、多继承、魔术方法
- 继承和多继承的概念和使用
- super的用法
- __str__ __repr__ __call__
- 多继承方法解析顺序和Mix-in开发模式
- 魔术方法原理和作用
继承
定义类的时候,在类名后面的括号里填继承的类的类名

顶级基类object
__bases__:查看类的直接父类

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

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


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


super用法
重写父类方法之后,又需要使用父类的方法
方法一:父类名.方法名
方法二:super 函数可以调用父类的方法


类在生成时会自动生成方法解析顺序
可以通过调用类的__mro__属性或者mro方法来查看类的继承关系
object是所有类的父类


Mix - in 设计模式
由多个模块组成一个整体
最好,多继承就一层,且是最后一层
魔术方法
一种特殊的方法,前后有两个下划线
特点:不需要人工调用,在特定的时候自动执行
魔术方法之运算方法


不同运算符调用不同的魔术方法(了解即可)
__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__方法


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




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

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


类中的一些查询相关信息的方法(了解既可)
__class__ 查看类名 格式: 实例.__class__
__dict__ 查看全部属性、返回属性和属性值键值对形式 格式:实例.__dict__
__doc__ 查看对象文档,即类中(用三个引号引起来的部分) 格式:类名.__dict__
__bases__ 查看父类 格式:类名.__base__
.__mro__ 查看多继承的情况下,子类调用父类方法时,搜索顺序 格式:子类名.__mro__ 实例.__class__.__mro__
Python继承、多继承、魔术方法的更多相关文章
- python类的继承、多继承及其常用魔术方法
继承 一个类可以派生出一个子类,这个子类可以使用父类的属性及方法,也可以在父类的基础上添加自己的独特属性或方法.属性和方法的继承的顺序是先从自己开始,找不到再去找父类,父类没有再找父类的父类,其尽头就 ...
- Python扩展之类的魔术方法
Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...
- Python中的常用魔术方法介绍
1.__init__ 初始化魔术方法 触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中) 参数:至少有一个self,接收对象 返回值:无 作用:初始化对象的成员 注意:使用该方式初 ...
- Python 基础之class魔术方法
类的常用魔术方法:无需人为调用,基本是在特定的时刻自动触发,方法名被前后两个下划线包裹 魔术方法,总结表: __init__:构造函数.初始化的时候调用. __new__:对象实例化方法,其实这才是类 ...
- python类:magic魔术方法
http://blog.csdn.net/pipisorry/article/details/50708812 魔术方法是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法&q ...
- (转)python类:magic魔术方法
原文:https://blog.csdn.net/pipisorry/article/details/50708812 版权声明:本文为博主皮皮http://blog.csdn.net/pipisor ...
- Python学习笔记:魔术方法详解
准备工作 为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始. class NewType(Object): mor_code_here class OldType: ...
- Python 魔术方法指南
入门 构造和初始化 构造定制类 用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对象 总结 附录 介绍 此教 ...
- Python的魔术方法详解
构造和初始化 __init__我们很熟悉了,它在对象初始化的时候调用,我们一般将它理解为"构造函数". 实际上, 当我们调用x = SomeClass()的时候调用,__init_ ...
- Python魔术方法-Magic Method
介绍 在Python中,所有以"__"双下划线包起来的方法,都统称为"Magic Method",例如类的初始化方法 __init__ ,Python中所有的魔 ...
随机推荐
- 【Gradle】Gradle插件
Gradle插件 插件的作用 把插件应用到项目中,插件会扩展项目的功能,帮助在项目构建过程中做很多事情. 1.可以添加任务到项目中,帮助完成测试.编译.打包等. 2.可以添加依赖配置到项目中,可以通过 ...
- iOS常用算法之单链表查找倒数第n个节点(图解)
拿到题目, 首先要先了解链表数据结构, 如下图: 常规思路: 利用数组, 遍历整个单链表, 将每个节点装入数组中, 最终拿到数组根据索引(数组长度-1-n)就得到了倒数第n个元素, 这里要注意从数组中 ...
- MySQL 57安装部署(Zip版)(Windows版)
1. 在<MYSQL>的根目录下新建一个my.ini写入以下内容 [mysqld] port = 3306 basedir=D:\mysql\mysql-5.7.22-winx64 # M ...
- Octave中的一些常用操作
>> 5+6ans = 11>> 1~=2ans = 1 %1表示true,0表示false>> 1~=1 %1不等于1ans = 0>> a=2 ...
- JVM-3-JVM内存结构
JVM内存结构可以大致可划分为线程私有区域和共享区域, 线程私有区域由虚拟机栈.本地方法栈.程序计数器组成,而共享区域由堆.元数据空间(方法区)组成.
- 【2019.8.15 慈溪模拟赛 T2】组合数(binom)(卢卡斯定理+高维前缀和)
卢卡斯定理 题目中说到\(p\)是质数. 而此时要求组合数向质数取模的结果,就可以用卢卡斯定理: \[C_x^y=C_{x\ div\ p}^{y\ div\ p}\cdot C_{x\ mod\ p ...
- 基于Django的Rest Framework框架的响应器
本文目录 一 作用 二 内置渲染器 三 局部使用 四 全局使用 五 自定义显示模版 回到目录 一 作用 根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件.用户请求URL: ht ...
- django--DateTimeField字段orm操作
django中的models.py是我们用来创建数据库里需要的表的,规定表中各个字段的类型,选择合适的字段类型尤为重要,常用的字段类型有:CharField.choice.IntegerField.T ...
- react的this.setState中的坑
react的this.setState中的有两个. 1.this.setState异步的,不能用同步的思维讨论问题 2.在进行组件通讯的回调的时候,this指向子组件,没有指向父亲这,怎么办呢.在 c ...
- 创 PHP RSA2 签名算法
什么是RSA2 ? RSA2 是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法. 该算法比SHA1WithRSA有更强的安全能力. 为了您的应用安 ...