首页 Python基础入门视频教程 Python内置特殊方法:迭代和遍历__iter__();__next__();__init__()
pay pay

Python内置特殊方法:迭代和遍历__iter__();__next__();__init__()

日期: 二月 14, 2023, 8:49 a.m.
阅读: 368
作者: Python自学网-村长

摘要: Python内置特殊方法:迭代和遍历__iter__();__next__();__init__()

00:00 / 21:00
1x
2x
1.5x
1.25x
1x
0.8x
0.5x
>
面向对象
    1. 第1课:Python面向对象程序设计
      21分钟
    2. 第2课:类属性和对象属性
      21分钟
    3. 第3课:类属性和对象属性操作本质对比
      21分钟
    4. 第4课:类属性和对象属的区别和使用对比
      21分钟
    5. 第5课:Python类方法的创建
      21分钟
    6. 第6课:实例方法,类方法和静态方法
      21分钟
    7. 第7课:三种方法访问权限对比
      21分钟
    8. 第8课:面向对象基础-元类
      21分钟
    9. 第9课:类属性,私有化属性,受保护属性的访问区别
      21分钟
    10. 第10课:面向对象-属性-私有化属性
      21分钟
    11. 第11课:面向对象-属性-只读属性
      21分钟
    12. 第12课:property操作只读属性
      21分钟
    13. 第13课:属性安全补充
      21分钟
    14. 第14课:内置属性
      21分钟
    15. 第15课:类属性,实例属性,初始化属性
      21分钟
    16. 第16课:面向对象-方法-方法回顾
      21分钟
    17. 第17课:内置特殊方法-对象信息重写
      21分钟
    18. 第18课:内置特殊方法-调用
      21分钟
    19. 第19课:内置特殊方法-索引操作
      21分钟
    20. 第20课:内置特殊方法-切片
      21分钟
    21. 第21课:内置特殊方法-对象比较
      21分钟
    22. 第22课:内置特殊方法-上下文环境的布尔值
      21分钟
    23. 第23课:内置特殊方法-迭代和遍历
      21分钟
    24. 第24课:内置特殊方法-描述器
      21分钟
    25. 第25课:内置特殊方法-装饰器
      21分钟
    26. 第26课:内置特殊方法-对象生命周期
      21分钟
    27. 第27课:内置特殊方法-面向对象小结案例
      21分钟
    28. 第28课:三大特性-继承和继承关系
      21分钟
    29. 第29课:三大特性-资源的继承和使用
      21分钟
    30. 第30课:三大特性-资源的覆盖或累加
      21分钟
    31. 第31课:三大特性-多态
      21分钟
    32. 第32课:面向对象-抽象类
      21分钟

面向对象-内置特殊方法-迭代和遍历。

# 1.for循环遍历
class Cat:
    def __init__(self, num):
        self.num = num

    def __getitem__(self, item):
        self.num += 1
        if self.num >= 10:  # 加个终止条件
            raise StopIteration('遍历结束')
        return self.num

c = Cat(2)
for i in c:
    print(i)
# 2.迭代遍历:直接把列表转为可迭代对象返回出来给实例
class Cat:
    def __init__(self, num):
        self.num = num

    def __iter__(self):
        return iter(self.num)  # 返回一个可迭代对象给下面的实例


list1 = [1, 2, 3, 4, 5, 6]
c = Cat(list1)
for i in c:
    print(i)
# 3.迭代遍历:在内部使用next方法来实现可迭代
class Cat:
    def __init__(self, num):  # 这里num是整数
        self.num = num

    def __iter__(self):  # 此方法一般用转换一个可迭代对象成为迭代器
        # return iter(self.num)
        return self  # 这里的self实例是不可迭代的,所以要增加一个__next__方法来完善

    def __next__(self):
        self.num += 1  # 和上面的for循环不一样,这里的+=1是指指针每次偏移1,上面的for循环是下标变化
        if self.num >= 10:  # 加个终止条件
            raise StopIteration('遍历结束')
        return self.num


# list1 = [1, 2, 3, 4, 5, 6]
# b = Cat(list1)
c = Cat(1)
for i in c:
    print(i)
# 上面的实例通过__next__()方法的加持,可以直接使用next在外界对对象进行迭代访问
class Cat:
    def __init__(self, num):  # 这里num是整数
        self.num = num

    def __iter__(self):
        # return iter(self.num)
        return self  # 这里的self实例是不可迭代的,所以要增加一个__next__方法来完善

    def __next__(self):
        self.num += 1  # 和上面的for循环不一样,这里的+=1是指指针每次偏移1,上面的for循环是下标变化
        if self.num >= 4:  # 加个终止条件
            raise StopIteration('遍历结束')
        return self.num


c = Cat(1)  # 从1到4
print(next(c))
print(next(c))
# print(next(b))  # StopIteration: 遍历结束
# 判断对象是不是迭代器:必须要实现__iter__()和__next__()两个方法
import collections.abc
print(isinstance(c, collections.abc.Iterator))  # 是不是迭代器:需要实现__iter__()和__next__()两个方法
print(isinstance(c, collections.abc.Iterable))  # 是不是可迭代的对象:只要实现__iter__这一个方法

 

原创视频,版权所有,未经允许,切勿转载,违者必究!
回顶部