自动发货网站建设创建个网站需要多少钱
4. 特殊成员
方法 | 作用 | 示例 |
---|---|---|
__init__ | 初始化对象 | obj = MyClass() |
__new__ | 创建对象(构造方法) | 返回对象实例 |
__call__ | 使对象可调用 | obj() |
__str__ | 定义对象的字符串表示 | print(obj) |
__getitem__ | 实现索引访问 | obj[key] |
__enter__/__exit__ | 上下文管理(with语句) | with obj as ctx: ... |
示例:上下文管理
class Database:def __enter__(self):print("连接数据库")return selfdef __exit__(self, *args):print("关闭连接")with Database() as db:print("执行查询操作")# 输出:
# 连接数据库
# 执行查询操作
# 关闭连接
5. 迭代器与生成器
5.1 迭代器
- 实现__iter__和__next__
class Counter:def __init__(self, max_num):self.current = 0self.max = max_numdef __iter__(self):return selfdef __next__(self):if self.current < self.max:self.current += 1return self.currentraise StopIterationfor num in Counter(3):print(num) # 输出1, 2, 3
5.2 生成器
- 使用yield简化迭代器
def counter(max_num):current = 0while current < max_num:current += 1yield currentfor num in counter(3):print(num) # 输出1, 2, 3
5.3 可迭代对象
- 仅需实现__iter__并返回迭代器
class MyRange:def __init__(self, max_num):self.max = max_numdef __iter__(self):return iter(range(self.max))for num in MyRange(3):print(num) # 输出0, 1, 2