当前位置: 首页 > news >正文

Python--面向对象进阶(下)

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 self
  
    def __exit__(self, *args):
        print("关闭连接")

with Database() as db:
    print("执行查询操作")

# 输出:
# 连接数据库
# 执行查询操作
# 关闭连接

5. 迭代器与生成器

5.1 迭代器

  • 实现__iter__​和__next__​
class Counter:
    def __init__(self, max_num):
        self.current = 0
        self.max = max_num
  
    def __iter__(self):
        return self
  
    def __next__(self):
        if self.current < self.max:
            self.current += 1
            return self.current
        raise StopIteration

for num in Counter(3):
    print(num)  # 输出1, 2, 3

5.2 生成器

  • 使用yield​简化迭代器
def counter(max_num):
    current = 0
    while current < max_num:
        current += 1
        yield current

for num in counter(3):
    print(num)  # 输出1, 2, 3

5.3 可迭代对象

  • 仅需实现__iter__​并返回迭代器
class MyRange:
    def __init__(self, max_num):
        self.max = max_num
  
    def __iter__(self):
        return iter(range(self.max))

for num in MyRange(3):
    print(num)  # 输出0, 1, 2

相关文章:

  • LeetCode-154. 寻找旋转排序数组中的最小值 II
  • HarmonyOS 中 Navigation 组件的应用困境与应对策略
  • 进程优先级和进程切换 ─── linux第12课
  • Windows逆向工程入门之MASM数据结构使用
  • ssm整合项目实现基础查询功能
  • 整数对最小和
  • 代数结构—笔记
  • 逻辑运算 | 位运算
  • 计算机网络:Socket网络编程 Udp与Tcp协议 第一弹
  • 基于SpringBoot+Vue的电影订票及评论网站的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • Java中String,StringBuffer,StringBuilder详解
  • 一文熟悉新版llama.cpp使用并本地部署LLAMA
  • [Windows] 免费电脑控制手机软件 极限投屏_正式版_3.0.1 (QtScrcpy作者开发)
  • Python利用pyobdc和tkinter框架连接数据库2-保存配置文件
  • 最新最详细的配置Node.js环境教程
  • shell脚本编程实践第6天
  • 【星云 Orbit • STM32F4】06. 串口密码:USART 数据传递
  • 论coding能力 new bing 对比 chatgpt
  • 安当防火墙登录安全解决方案:零信任认证+国密证书+动态口令构建全方位身份安全屏障
  • c语言中return 数字代表的含义
  • 杭州“放大招”支持足球发展:足球人才可评“高层次人才”
  • 【社论】个人破产探索,要守住“诚实而不幸”的底线
  • 习近平致电祝贺阿尔巴尼斯当选连任澳大利亚总理
  • 熊出没!我驻日本札幌总领馆提示中国公民注意人身安全
  • 技术派|更强的带刀侍卫:从054B型战舰谈谈世界护卫舰发展
  • 女高音吴睿睿“古词新唱”,穿着汉服唱唐诗宋词