1. 继承和多继承的概念和使用
  2. super的用法
  3. __str__   __repr__   __call__
  4. 多继承方法解析顺序和Mix-in开发模式
  5. 魔术方法原理和作用

继承

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

顶级基类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继承、多继承、魔术方法的更多相关文章

  1. python类的继承、多继承及其常用魔术方法

    继承 一个类可以派生出一个子类,这个子类可以使用父类的属性及方法,也可以在父类的基础上添加自己的独特属性或方法.属性和方法的继承的顺序是先从自己开始,找不到再去找父类,父类没有再找父类的父类,其尽头就 ...

  2. Python扩展之类的魔术方法

    Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...

  3. Python中的常用魔术方法介绍

    1.__init__ 初始化魔术方法 触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中) 参数:至少有一个self,接收对象 返回值:无 作用:初始化对象的成员 注意:使用该方式初 ...

  4. Python 基础之class魔术方法

    类的常用魔术方法:无需人为调用,基本是在特定的时刻自动触发,方法名被前后两个下划线包裹 魔术方法,总结表: __init__:构造函数.初始化的时候调用. __new__:对象实例化方法,其实这才是类 ...

  5. python类:magic魔术方法

    http://blog.csdn.net/pipisorry/article/details/50708812 魔术方法是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法&q ...

  6. (转)python类:magic魔术方法

    原文:https://blog.csdn.net/pipisorry/article/details/50708812 版权声明:本文为博主皮皮http://blog.csdn.net/pipisor ...

  7. Python学习笔记:魔术方法详解

    准备工作 为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始. class NewType(Object): mor_code_here class OldType: ...

  8. Python 魔术方法指南

    入门 构造和初始化 构造定制类 用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对象 总结 附录 介绍 此教 ...

  9. Python的魔术方法详解

    构造和初始化 __init__我们很熟悉了,它在对象初始化的时候调用,我们一般将它理解为"构造函数". 实际上, 当我们调用x = SomeClass()的时候调用,__init_ ...

  10. Python魔术方法-Magic Method

    介绍 在Python中,所有以"__"双下划线包起来的方法,都统称为"Magic Method",例如类的初始化方法 __init__ ,Python中所有的魔 ...

随机推荐

  1. JS基础语法---函数也是一种数据类型

    1. 如何获取某个变量的类型? typeof 2. 函数是有数据类型 ,数据类型:是function function f1() { console.log("我是函数"); } ...

  2. 通过存储过程(SP)实现SQL Server链接服务器(LinkServer)的添加

    1. 背景 当系统的微服务化做的不是很高的时候,部分功能要通过DB LinkServer 来实现跨 Server 查询,当然,有时候BI抽数据.DBA数据库维护可能也会创建LinkServer. 特别 ...

  3. tomcat修改进程名称

    1.window平台: 打开tomcat_home\bin\setclasspath.bat文件,找到set _RUNJAVA=”%JRE_HOME%\bin\java”这一行. 将该行注释掉 ,然后 ...

  4. NXP_RTCESL库

    恩智浦实时控制嵌入式软件库(缩写为RTCESL,以前为恩智浦嵌入式软件库FSLESL)是一组算法,从基础数学运算到高级数学变换以及高级观测器,这些都可以方便地用在复杂的实时控制应用中以及我们的电机控制 ...

  5. APK更新集成实践

    任务目标:将内网APK打包后最新下载链接.更新时间.更改日志显示在一个我自己制作的APP里 任务作用:我们在内网测试时更新下载APK更加便捷,并且能够清楚目标APK的版本情况,回归.验证做到有的放矢 ...

  6. 201871010113-刘兴瑞《面向对象程序设计(java)》第十二周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...

  7. windows下redis作为系统服务如何重启

    第一种方法: 键入win+R打开运行对话框,键入Services.msc打开windows服务窗口,找到redis服务,先停止该服务,然后再启动 第二种方法: 键入win+R打开运行对话框,键入cmd ...

  8. 洛谷 P5639 【CSGRound2】守序者的尊严

    洛谷 P5639 [CSGRound2]守序者的尊严 洛谷传送门 题目背景 由于Y校最近进行了对学校食堂的全面改革与对小卖部的全面整治(乱搞),导致学校小卖部卖的零食被禁售了:学校食堂的炸鸡窗口也消失 ...

  9. SDN课程阅读作业(2)

    SDN课程阅读作业(2) 1.过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么? 答:可编程网络的发展分为三个阶段. (1)主动网络阶段 贡献: 1.对主动网络的研究开创了可编程网络 ...

  10. Istio修改IngressGateway网络类型

    ingressgateway的默认网络类型是LoadBanlancer,在没有外部负载均衡的情况下可以修改为NodePort. 1.修改 kubectl patch service istio-ing ...