下面是我的类方法的虚拟示例:
class A:
def __init__(self, name):
self.name = name
def __repr__(self):
for i in range(0,5):
if i == 0:
print(self.name)
else:
print("-")
i += 1
m1 = A("x")
m1
它为我打印出结果。但是,在此期间,它给出了一个错误,指出__repr__
返回了非字符串。我知道我需要使用return而不是print __repr__
,但是当满足第一个条件时,return将停止我的程序。我也尝试过收益但没有运气。
我知道这个虚拟程序看起来很荒谬,我可以使用其他一些方法而不是__repr__
打印出结果。但这只是我实际程序的简化版本,出于某些原因我必须使用__repr__
或__str__
。
答案 0 :(得分:3)
你有两个基本问题。首先是你改变了循环中的循环索引 - 糟糕的形式,但根本不是致命的。第二个是你没有返回一个值。
立即修复
def __repr__(self):
for i in range(0,5):
if i == 0:
val = self.name
else:
val += "-"
return val
然而,即使这样也是无效的。
更好
您希望附加四个破折号的名称。为什么不这样做?
def __repr__(self):
return self.name + "----"
答案 1 :(得分:2)
我假设您希望__repr__
输出与打印时完全相同。为此,您只需稍微更改逻辑。这样的事情应该有效:
def __repr__(self):
string = ""
for i in range(0,5):
if i == 0:
string += self.name
else:
string += "-"
i += 1
return string