Python 如何使._; repr___;()正确工作?

Python 如何使._; repr___;()正确工作?,python,for-loop,repr,Python,For Loop,Repr,我想在Python中使用\uuuu repr\uuuu,这样我就可以按照下面的方式查看表示 class Polynomial: def __init__(self, *args): self.args = args def __repr__(self): Repr = "Polynomial(" for i in args: if i == 0:

我想在Python中使用
\uuuu repr\uuuu
,这样我就可以按照下面的方式查看表示

class Polynomial:
    def __init__(self, *args):
        self.args = args
        def __repr__(self):
            Repr = "Polynomial("
            for i in args:
                if i == 0:
                    Repr = Repr + str(self.args[i])
                else:
                    Repr = Repr + ", "+ str(self.args[i])
            return Repr

因此,如果我输入
多项式(1,2,3)
,它应该返回
“多项式(1,2,3)
,而不是像
。但它仍然返回那些没有信息的东西。我哪里做错了?

您有多个问题:

  • 缩进不正确,
    \uuuuu repr\uuuu
    应该是类的方法。它当前是
    \uuuu init\uuuu
    方法的内部方法
  • 您正在迭代
    args
    ,但尝试使用
    i
    ,就好像它是索引一样(它是实际的arg)
  • 您可以使用
    .join()
    轻松地将列表转换为逗号分隔的字符串
  • 以下是您的方法的工作实现:

    class Polynomial:
        def __init__(self, *args):
            self.args = args
        def __repr__(self):
            Repr = "Polynomial("
            for i in range(len(self.args)):
                if i == 0:
                    Repr = Repr + str(self.args[i])
                else:
                    Repr = Repr + ", "+ str(self.args[i])
            Repr += ")"
            return Repr
    
    这是一个更加简化的方法,它使用字符串格式和
    .join()
    ::


    以下是修复代码中的一些拼写错误后的解决方案。但我建议您使用f-strings和一行表达式来表示字符串。在@Selcuk answer中更好地解释了一行和f-strings的用法

    class Polynomial:
        def __init__(self, *args):
            self.args = list(args)
        def __repr__(self):
            Repr = "Polynomial("
            for i,j in enumerate(self.args):
                if i == 0:
                    Repr = Repr + str(j)
                else:
                    Repr = Repr + ", "+ str(j)
    
            return Repr + ")"
    

    “您不应该以这种方式处理内置的
    \uu repr\uuu
    ”:需要引用。@Selcuk My Bad,从现在开始,我将谨慎地说这些话。我现在已经编辑了答案。我认为f字符串是一种更好的表示字符串的pythonic方法,它应该被视为一种建议。你应该总是添加散文来解释你的解决方案。“只要先检查一下你的事实,”物理学家说,“现在一切都好了。”。如果没有,请编辑答案,如果可能的话,因为它将激励我。你的散文说一行和f字串,但你没有显示在代码中。我觉得你没有抓住我评论的重点。
    class Polynomial:
        def __init__(self, *args):
            self.args = list(args)
        def __repr__(self):
            Repr = "Polynomial("
            for i,j in enumerate(self.args):
                if i == 0:
                    Repr = Repr + str(j)
                else:
                    Repr = Repr + ", "+ str(j)
    
            return Repr + ")"