【问题标题】:Convert list to string by using OOP使用 OOP 将列表转换为字符串
【发布时间】:2026-01-13 02:10:01
【问题描述】:

我正在尝试通过使用 OOP 中的方法将列表转换为一个序列字符串。例如,我想将 ['Stack', 'over', 'flow', 3] 转换为 '*3'。

当我尝试这样做时,结果仍然作为列表返回-

class NewClass:
    def __init__(self, array):
        self.array = array

    def __str__(self):
        return "".join(str(i) for i in self.array)


s_1 = ["Stack", "over", "flow", 3]
print(s_1.__str__())

我得到了这个输出 - ['Stack', 'over', 'flow', 3]

你能指导我如何正确地做吗?

【问题讨论】:

  • 你在哪里创建一个使用你喜欢的方法的新类的实例?我刚刚看到您创建了一个基本列表...并打印了 hint hint
  • beisde:您正在直接使用 dunder 方法(您不应该这样做) - 使用 print(s_1)(隐式调用它)或 print(str(s_1)) 明确地这样做

标签: python oop arraylist


【解决方案1】:

你需要实例化定义的类:

class NewClass:
    def __init__(self, array):
        self.array = array

    def __str__(self):
        return "".join(str(i) for i in self.array)


s_1 = NewClass(["Stack", "over", "flow", 3])
print(s_1)  # print 'automatically' uses __str__!

输出:

*3

【讨论】:

    【解决方案2】:

    在传递列表参数之前,您需要创建类“NewClass”的实例。您的代码应如下所示:`

    class NewClass:
        def __init__(self, array):
          self.array = array
    
        def __str__(self):
          return "".join(str(i) for i in self.array)
    
    
     s_1 = NewClass(["Stack", "over", "flow", 3])
     print(s_1.__str__())`
    

    【讨论】:

    • 非常有帮助!谢谢