廖雪峰python3复习总结——day7-4
多重继承:通过多重继承,一个子类就可以同时获得多个父类的所有功能
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相关推荐
- 廖雪峰python3高阶函数部分理解
廖雪峰python3高阶函数部分理解 时间:2018年04月21日00:00:03 4.20,看了廖雪峰的python3教程,没有看太多,只看了高阶函数的map(前几天),reduce,filter, ...
- 廖雪峰python3爬虫教程_Scrapy爬虫框架入门教程(1)——爬取廖雪峰老师的博客...
最近一直在学习scrapy,但是网上关于scrapy的教程实在是太少,能找到的教程大多都是基于py2.7/scrapy0.2以下,甚至很多教程都是互相抄袭,连代码都抄漏了好多,更别提各种缩进错误.变量 ...
- python3基础教程廖雪峰云-廖雪峰Python3教程---实战day1-day13总结
首先是工程文件架构: 结构图 当然最后我们只完成www部分. 然后分析一下整个博客网站的架构: 基于asyncio(异步io协程,异步编程的一个原则:一旦决定使用异步,则系统每一层都必须是异步,&qu ...
- 廖雪峰 Python3
之前学的python2,准备重新系统的学习一遍python,做到快速和查漏补缺. 作者原网址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b3 ...
- 据廖雪峰python3教程----python学习第二天
输入和输出 用print()在括号中加上字符串,就可以向屏幕输出指定的字符 eg: 1 >>> print('hello, world') print()函数也可以接受多个字符串,字 ...
- python3基础教程廖雪峰云-学习廖雪峰Python3教程的pytho
我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意 ...
- 据廖雪峰python3教程----python学习第十三天
在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Supe ...
- 据廖雪峰python3教程----python学习第八天
函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了. python的函数除了正常的定义必选参数外,还可以使用默认参数,可变参数合关键字参数, 位置参数 定义一个计算x ...
- python3基础教程pdf下载-廖雪峰Python3基础教程完整版电子书免费下载
Python 教程 这是小白的 Python 新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的 Python 3 版本. Python 是一种计算机程序设计语言.你可能已经听说过很多 ...
最新文章
- 【PP生产订单】入门介绍(十一)
- php 语义解析,有关语义分析的文章推荐6篇
- 支付宝工程师创造出了一个可以“拷贝”支付宝的神器
- 爬虫-urlencode与parse_qs函数
- python D14 内置函数二
- 深度学习课程笔记(七):模仿学习(imitation learning)
- python无法在终端运行程序_解决项目pycharm能运行,在终端却无法运行的问题
- RPCBind 服务被利用进行 UDP 反射 DDoS 风险预警
- Spss-系统聚类软件实操
- 计算机网络基础知识 - 物理层
- php mysql网页象棋源码_Android项目源码安卓联网中国象棋源码
- 英雄无敌5东方部落秘籍
- 苹果手机设置信任软件
- sumif单列求和_Sumif、Sumifs单列多条件求和
- 打开本地html加载网页慢,电脑检查网速正常但打开网页慢如何解决
- 转帖几篇文章回味一下ACM^_^
- MATLAB中BLAS加载错误,找不到指定模块
- Bugku Snowfall
- OverNet-250FPS SISR实时算法- | Lightweight Multi-Scale Super-Resolution with Overscaling Network
- 每个程序员都应该知道的Linux基础知识!全文4900字,没有耐心的不建议看 ——( Linux文件系统 + 系统管理类命令 + bash基础特性)
热门文章
- 关于JavaScript时间戳及其与日期对象的相互转换
- MATLAB逗号用法专题
- 金 融 量 化 分 析 • JoinQuant • 第 一 篇
- mysql create default_MySQL中create table DEFAULT 用法
- 四六级高分技巧--贼有用
- javascript-DOM基础教程
- 工作那些事(一)今年工作不好找
- 2017北京图书订货会会刊(参展商名录)
- location.reload() 和 location.replace()的区别和应用。
- 站在小程序肩膀上的微选,打开了一扇任意门