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. QPNP 8909 8916 充电相关(2)【转】

    上一篇主要讲电池相关的一些知识,上节忘记讲了,电池一般分为电量计电池和非电流计电池,电量计电池,就不需要用pmu8916的IC,当然这只是只,不需要BMS来计算soc,而jni层也需要读取电流计的电池 ...

  2. LInux:网络连接的设置

    主机名的配置 主机名的配置(配置文件/etc/hostname) 1.使用 hostname 命令临时设置主机名 命令格式:hostname [新主机名] 2.永久设置主机名 命令格式:hostnam ...

  3. MongoDB学习笔记(三、MongoDB聚合与更新)

    目录: 聚合 更新 更新选择器 ObjectId 更新操作的原子性 聚合: 聚合语法:db.collectionName.aggregate(aggregate_operation) 聚合操作其实就是 ...

  4. 史上最全的各种C++ STL容器全解析

    史上最全的C++ STL 容器大礼包 为什么\(C++\)比\(C\)更受人欢迎呢?除了\(C++\) 的编译令人感到更舒适,\(C++\)的标准模板库(\(STL\))也占了很重要的原因.当你还在用 ...

  5. react组件通信方式汇总

    父组件更新组件状态,通过props传递给子组件,子组件得到后进行更新.Timer 是倒计时子组件,集成在了OrderPay父组件里,父组件向子组件传订单数据参数order对象.如下代码: <Ti ...

  6. Feign原理 (图解)

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 疯狂创客圈 正在进行分布式和高并发基础原理的研习,进行已经发布一些基础性的文章: 一.版本1 :springcloud ...

  7. python-13-集合增删查

    前言 集合:可变的数据类型,但元素必须是不可变的数据类型,无序不重复,既可哈希.所以python的集合是不能进行修改的,只有增删查.可哈希.不可变数据类型有:元组.bool.int.str 一.增 1 ...

  8. CentOs安装mysql数据库

    1. 下载 http://dev.mysql.com/downloads/mysql/ 或者使用wget下载: wget http://dev.mysql.com/get/Downloads/MySQ ...

  9. LeetCode 705:设计哈希集合 Design HashSet

    题目: 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值. ...

  10. node 连接 mysql 数据库三种方法------笔记

    一.mysql库 文档:https://github.com/mysqljs/mysql mysql有三种创建连接方式 1.createConnection 使用时需要对连接的创建.断开进行管理 2. ...