试图在python中重新创建__str __()方法

时间:2017-09-26 23:11:50

标签: python python-3.x arraylist

我的任务是尝试为python重新创建ArrayList类型的方法。除了str和repr函数之外,我已经成功地重新创建了所有内容,但由于它们的行为大致相同,所以我只需要帮助。下面是我的方法代码,但我不断收到类型错误说明"只能加入一个可迭代的"

def __str__(self):
    """Implements `str(self)`. Returns '[]' if the list is empty, else
    returns `str(x)` for all values `x` in this list, separated by commas
    and enclosed by square brackets. E.g., for a list containing values
    1, 2 and 3, returns '[1, 2, 3]'."""
    str= '['
    if len(self.data)>0:
        for i in range(len(self.data)):
            if i ==0:
                str1 = str+''.join(self[i])
            else:
                str1 = str+','+ ''.join(self[i])
        return str1+']'
    else:
        return '[]'

所有这一切只有一个问题,那就是我只能调用以下方法来帮助,尽管这不应该是对这种方法的限制。请帮助!

方法:  lst [i]用于获取和设置现有的正索引i的值

len(lst)获取插槽数

lst.append(无)在%time时将列表增加一个插槽

del lst [len(lst)-1]删除列表中的最后一个插槽

1 个答案:

答案 0 :(得分:0)

关键是你可以对列表的元素使用str();由于您的__str__()未调用str(self),因此您将无法进行无限递归。

这是一种方法。

#UNTESTED
def __str__(self):
    """Implements `str(self)`. Returns '[]' if the list is empty, else
    returns `str(x)` for all values `x` in this list, separated by commas
    and enclosed by square brackets. E.g., for a list containing values
    1, 2 and 3, returns '[1, 2, 3]'."""

    # Assuming that SELF implements iteration
    return '[' + ', '.join(str(x) for x in self) + ']'

    # Assuming that iteration isn't implemented
    return '[' + ', '.join(str(self[i]) for i in range(len(self))) + ']'