多重继承:通过多重继承,一个子类就可以同时获得多个父类的所有功能

Mixln:目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系

对于多态继承中属性方法矛盾的问题参照博客:https://kevinguo.me/2018/01/19/python-topological-sorting/,文中的最左原则,我认为是从代码的先后顺序来讲。

定制类:Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类。

__str__调用类时,print()返回特定的字符串,直接调用时,返回的是开发者看到的字符串。即__repr__

__iter__返回一个迭代对象,和__next__方法一起,调用next()

__getitem__取值和切片,isinstance(n, slice)

__getattr__当调用不存在的属性时,比如score,Python解释器会试图调用__getattr__(self, attr)来尝试获得属性

__call__()方法,就可以直接对实例进行调用。

使用枚举类:

Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较。

表达式为:

from enum import EnumMonth = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))

默认给Month.Jan赋值为1

若要精准控制则:可以调用@unique

使用元类:

使用type()既可以返回数据类型,也可以创建类。

>>> def fn(self, name='world'): # 先定义函数
...     print('Hello, %s.' % name)
...>>> Hello = type('Hello', (object,), dict(hello=fn)) # 创建Hello class第一个参数为class名称;
第二个参数为继承的父类;
第三个参数为绑定的函数

使用metaclass:先定义metaclass,就可以创建类,最后创建实例.类可以看做是元类的实例。

# metaclass是类的模板,所以必须从`type`类型派生:
class ListMetaclass(type):def __new__(cls, name, bases, attrs):attrs['add'] = lambda self, value: self.append(value)return type.__new__(cls, name, bases, attrs)class MyList(list, metaclass=ListMetaclass):pass
L = MyList()
L.add(1)
print(L)

廖雪峰python3复习总结——day7-4相关推荐

  1. 廖雪峰python3高阶函数部分理解

    廖雪峰python3高阶函数部分理解 时间:2018年04月21日00:00:03 4.20,看了廖雪峰的python3教程,没有看太多,只看了高阶函数的map(前几天),reduce,filter, ...

  2. 廖雪峰python3爬虫教程_Scrapy爬虫框架入门教程(1)——爬取廖雪峰老师的博客...

    最近一直在学习scrapy,但是网上关于scrapy的教程实在是太少,能找到的教程大多都是基于py2.7/scrapy0.2以下,甚至很多教程都是互相抄袭,连代码都抄漏了好多,更别提各种缩进错误.变量 ...

  3. python3基础教程廖雪峰云-廖雪峰Python3教程---实战day1-day13总结

    首先是工程文件架构: 结构图 当然最后我们只完成www部分. 然后分析一下整个博客网站的架构: 基于asyncio(异步io协程,异步编程的一个原则:一旦决定使用异步,则系统每一层都必须是异步,&qu ...

  4. 廖雪峰 Python3

    之前学的python2,准备重新系统的学习一遍python,做到快速和查漏补缺. 作者原网址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b3 ...

  5. 据廖雪峰python3教程----python学习第二天

    输入和输出 用print()在括号中加上字符串,就可以向屏幕输出指定的字符 eg: 1 >>> print('hello, world') print()函数也可以接受多个字符串,字 ...

  6. python3基础教程廖雪峰云-学习廖雪峰Python3教程的pytho

    我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意 ...

  7. 据廖雪峰python3教程----python学习第十三天

    在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Supe ...

  8. 据廖雪峰python3教程----python学习第八天

    函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了. python的函数除了正常的定义必选参数外,还可以使用默认参数,可变参数合关键字参数, 位置参数 定义一个计算x ...

  9. python3基础教程pdf下载-廖雪峰Python3基础教程完整版电子书免费下载

    Python 教程 这是小白的 Python 新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的 Python 3 版本. Python 是一种计算机程序设计语言.你可能已经听说过很多 ...

最新文章

  1. 【PP生产订单】入门介绍(十一)
  2. php 语义解析,有关语义分析的文章推荐6篇
  3. 支付宝工程师创造出了一个可以“拷贝”支付宝的神器
  4. 爬虫-urlencode与parse_qs函数
  5. python D14 内置函数二
  6. 深度学习课程笔记(七):模仿学习(imitation learning)
  7. python无法在终端运行程序_解决项目pycharm能运行,在终端却无法运行的问题
  8. RPCBind 服务被利用进行 UDP 反射 DDoS 风险预警
  9. Spss-系统聚类软件实操
  10. 计算机网络基础知识 - 物理层
  11. php mysql网页象棋源码_Android项目源码安卓联网中国象棋源码
  12. 英雄无敌5东方部落秘籍
  13. 苹果手机设置信任软件
  14. sumif单列求和_Sumif、Sumifs单列多条件求和
  15. 打开本地html加载网页慢,电脑检查网速正常但打开网页慢如何解决
  16. 转帖几篇文章回味一下ACM^_^
  17. MATLAB中BLAS加载错误,找不到指定模块
  18. Bugku Snowfall
  19. OverNet-250FPS SISR实时算法- | Lightweight Multi-Scale Super-Resolution with Overscaling Network
  20. 每个程序员都应该知道的Linux基础知识!全文4900字,没有耐心的不建议看 ——( Linux文件系统 + 系统管理类命令 + bash基础特性)

热门文章

  1. 关于JavaScript时间戳及其与日期对象的相互转换
  2. MATLAB逗号用法专题
  3. 金 融 量 化 分 析 • JoinQuant • 第 一 篇
  4. mysql create default_MySQL中create table DEFAULT 用法
  5. 四六级高分技巧--贼有用
  6. javascript-DOM基础教程
  7. 工作那些事(一)今年工作不好找
  8. 2017北京图书订货会会刊(参展商名录)
  9. location.reload() 和 location.replace()的区别和应用。
  10. 站在小程序肩膀上的微选,打开了一扇任意门