目录
一、引言
二、什么是元类
三、为什么用元类
四、内置函数exec(储备)
五、class创建类5.1 type实现
六、自定义元类控制类的创建6.1
目录
一、上下文管理协议
二、模拟open
三、优点
我们知道在操作文件对象的时候可以这么写
with open('a.txt') as f:
'代码块'
上述叫做上下文管理协议,即with语句
目录
一、__module__
二、__class__
# lib/aa.py
class C:
def __init__(self):
self.name = 'SB'
# index.py
目录
一、简单示例
二、StopIteration异常版
三、模拟range
四、斐波那契数列
一、简单示例
死循环
class Foo:
def __init__(self,
目录
一、__str__
二、__repr__
一、__str__
打印时触发
class Foo:
pass
obj = Foo()
print(obj)
<__main__.Foo object
目录
一、小结
曾经我幼稚的以为认识了python的__init__()方法就相当于认识了类构造器,结果,__new__()方法突然出现在我眼前,让我突然认识到原来__new__才是老大。为什么这么说呢?
我们首先得从__new__
目录
一、__call__
一、__call__
对象后面加括号时,触发执行。
注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()
目录
一、什么是__slots__
二、为什么用__slots__
三、刨根问底
一、什么是__slots__
__slots__是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串
目录
一、__del__
一、__del__
__del__也称之为析构方法
__del__会在对象被删除之前自动触发
class People:
def __init__(self, name, age):
目录
一、__format__
一、__format__
自定制格式化字符串
date_dic = {
'ymd': '{0.year}:{0.month}:{0.day}',
'dmy': '{0.day}/{0.m
目录
一、__setitem__
二、__getitem__
三、__delitem__与__delattr__
class Foo:
def __init__(self, name):
目录
一、描述符
二、描述符的作用2.1 何时,何地,会触发这三个方法的执行
三、两种描述符3.1 数据描述符
3.2 非数据描述符
四、描述符注意事项
目录
一、__getattr__
二、__getattribute__
三、__getattr__与__getattribute__
一、__getattr__
不存在的属性访问,触发__getattr
目录
一、__setattr__
二、__delattr__
三、 __getattr__
class Foo:
x = 1
def __init__(self, y):
目录
一、反射在类中的使用1.1 应用
二、反射在模块中的使用2.1 前言
2.2 反射机制2.2.1 getattr()
2.2.2 hasattr(object, name)
目录
一、isinstance与type
二、issubclass
一、isinstance与type
在游戏项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。
这样做
目录
一、项目地址
二、作业要求2.1 加属性
2.2 连关系
一、项目地址
https://github.com/nickchen121/course_selected
二、作业要求
目录
一、面向对象进阶小结1.1 类的继承
1.2 类的派生
1.3 类的组合
1.4 菱形继承问题
1.5 多态与多态性
1.6 类的封装
1.7 类的pr
目录
一、绑定方法1.1 对象的绑定方法
1.2 类的绑定方法
二、非绑定方法
三、练习3.1 绑定方法小结
3.2 非绑定方法小结
目录
一、多态1.1 动物的多种形态
1.2 文件的多种形态
二、多态性2.1 动物形态多态性的使用
2.2 文件形态多态性的使用
2.3 序列数据类型多态性的使用