为两个不同长度的实例变量定义__iter__

时间:2018-06-09 15:08:33

标签: python oop

我有以下课程。它有两个实例变量表示为数组。它们不一定具有相同的长度:

class A(object):

    def __init__(self, input):
        self.input = []
        for data in input:
            self.input.append(data)
        self.other_information = []

self.inputself.other_information都将包含其他类的对象。在我的__str__方法中,我将需要迭代它们。定义一个__iter__方法来处理具有单个数组的实例变量的对象是没有问题的。如果两个数组具有相同的长度,这不是问题,但是我可以使用单个__iter__方法迭代我的__str__方法中具有不同长度的两个实例变量吗?我在这里看过非OOP帖子,但是这样的话呢?

1 个答案:

答案 0 :(得分:1)

您可以使用itertools.chain()按顺序迭代两个数组

'\ufeffThe Project Gutenberg E8'

您也可以使用“收益率”。结果将是相同的。

import itertools


class A(object):
    def __init__(self, input):
        self.input = []
        for data in input:
            self.input.append(data)
        self.other_information = list(range(5))

    def __iter__(self):
        return itertools.chain(self.input, self.other_information)


a = A(['a', 'b', 'c'])

for i in a:
    print(i)

# a
# b
# c
# 0
# 1
# 2
# 3
# 4