内容概要
- 特殊成员
- 反射
- configparser模块
- hashlib模块
- logging模块
- 异常处理
- 模块
- 包
1. 特殊成员
什么是特殊成员呢? __init_()就是个特殊的成员. 带双下划线的都是特殊方法. 这些方法在特殊的场景的时候会被自动的执行. 比如
1. 类名() 会自动执行__init__()
2. 对象() 会自动执行__call__()
3. 对象[key] 会自动执行__getitem__()
4. 对象[key] = value 会自动执行__setitem__()
5. del 对象[key] 会自动执行 __delitem__()
6. 对象+对象 会自动执行 __add__()
7. with 对象 as 变量 会自动执行__enter__ 和__exit__
8. 打印对象的时候 会自动执行 __str__
9. 干掉可哈希 __hash__ == None 对象就不可哈希了.
创建对象的真正步骤:
首先, 在执行类名()的时候. 系统会自动先执行__new__()来开辟内存. 此时新开辟出来的内存区域是空的. 紧随其后, 系统自动调用__init__()来完成对象的初始化⼯作. 按照时间轴来算.
1. 加载类
2. 开辟内存(__new__)
3. 初始化(__init__)
4. 使用对象干xxx
类似的操作还有很多很多. 我们不需要完全刻意的去把所有的特殊成员全都记住. 实战中也用不到那么多. 用到了查就是了.
单例模式:
class Foo(object): _instance = None # 实例 # 先 def __new__(cls, *args, **kwargs): if Foo._instance == None: Foo._instance = object.__new__(cls) # 开辟内存 return Foo._instance # 后 def __init__(self): print("我是一个简单的__init__") f1 = Foo() # 第一步先执行__new__分配内存, 第二步执行__init__初始化这段内存 f2 = Foo() print(f1) print(f2)