Skip to main content
 首页 » 编程设计

python之__repr__() 返回非字符串

2025年05月04日24think

所以我有一个类方法,我想用它来绘制字典及其值:

 def __repr__ (self):  
        for row in zip(*([ky]+map(str,val) for ky,val in (self.slovar.items()))): 
 
           print"\t".join (row) 

如果是这样,我会得到想要的输出:

>>> test 
n   n1  n2 
1   a   2.3 
2   b   2.1 
3   d   2.5 
 
Traceback (most recent call last): 
  File "<pyshell#521>", line 1, in <module> 
    test 
TypeError: __repr__ returned non-string (type NoneType) 

还有回溯错误。

如果我返回值而不是打印出来,我只会得到这个:

>>> test 
n   n1  n2 

如果我创建一个自定义方法而不是默认的“系统”方法,它工作正常......(我需要它是默认的)

请您参考如下方法:

您的__repr__ 方法使用print 输出信息,但没有return 语句,因此它实际上返回None,这不是一个字符串。


你可以做的是:

def __repr__ (self):  
    parts = [] 
    for row in zip(*([ky]+map(str,val) for ky,val in (self.slovar.items()))): 
       parts.append("\t".join (row)) 
    return '\n'.join(parts) 

您可能还想看看 the pprint module .