在 Python 中创建带有类的对象列表

Jam*_*amy 0 python class list object

我正在尝试模拟我不久前学到的 Java toString 方法。我可能在这里偏离了基地,并且肯定有一种更简单的方法可以用一个简单的列表来完成我想要做的事情。

我真正想做的是能够将对象附加到列表中,然后从列表中打印有关这些对象的特定特征。我还想跟踪对象的索引。这是我到目前为止所得到的,但是当我打印时,我没有得到任何错误,并且有一个空行,没有任何打印。

class Character_list():
    def __init__(self, list):
        self.list = []

def toString(self):
    result = ""
    for i in self.list:
        result += self.list[i]

    return result

def main(): 
    x = Character_list([1, 2])
    print(x.toString())

main()
Run Code Online (Sandbox Code Playgroud)

sch*_*ggl 5

三件事:

首先,使用传递给构造函数的参数来实际实例化对象

class Character_list():
    def __init__(self, lst):
        self.lst = lst  # use the parameter! And don't use 'list' as a variable name
        # or even better, use a shallow copy:
        self.lst = list(lst)
Run Code Online (Sandbox Code Playgroud)

其次,Python循环通常是for-each循环。这意味着您正在迭代元素,而不是索引。所以

    for i in self.lst:
        result += i
Run Code Online (Sandbox Code Playgroud)

实际上会将列表元素(必须是字符串,否则使用:)附加result += str(i)result

第三,当在对象上使用内置函数时,Python 版本的toStringis和 is 会被隐式调用。所以,例如__str__str()

def __str__(self):
    return ''.join(map(str, self.lst))
Run Code Online (Sandbox Code Playgroud)

会做你想做的事,但更一般地说,例如当你打电话时

print(x)
Run Code Online (Sandbox Code Playgroud)