【问题标题】:Provide iterable for single elements为单个元素提供可迭代
【发布时间】:2021-11-05 08:47:01
【问题描述】:

我有一个包含对象的列表或相同对象的另一个列表:

class OrderLine:
    pass 

lines = [OrderLine(), [OrderLine(), OrderLine()]]

def process_line(line):
    pass 

当我查询列表时,我需要执行以下操作 从 collections.abc 导入 Iterable

index = 0
line = lines[index]
if isinstance(line, Iterable):
     for _line in line:
         process_line(_line) 
else:
     process_line(line) 

我的问题是,我怎样才能编写 OrderLine 类,这样我就不必检查类型了。如果我从列表中获得 OrderLine,则循环将进入一次,如果我获得 Iterable,则循环将进入更多次。 喜欢:

index = 0
line = lines[index]
for _line in line:
    process_line(_line)

【问题讨论】:

    标签: python iteration


    【解决方案1】:

    我找到了答案。

    只需在OrderLine 类中写入以下方法:

    def __iter__(self):
        return iter((self,))
    

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 2018-07-13
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      相关资源
      最近更新 更多