python中的应该repr方法总是返回字符串



我是Python的新手。我已经写了下面的代码——

class AF:   
def __repr__(self):
return  {'name':1, 'age':44}
c = AF()        
print(c.__repr__())
print(repr(c))

当我运行这个程序时,它会产生以下错误——

{'name': 1, 'age': 44}
print(repr(c))
TypeError: __repr__ returned non-string (type dict)

我在Python文档中读到repr应该返回字符串,OK得到了它,那么为什么第一个print语句成功运行并打印了字典,而第二个print生成了错误?两个电话都不应该都失败吗?试图了解这里内部发生了什么。

似乎内置的repr函数正在对实例的__repr__函数的返回类型执行额外的检查,如果它不是预期的str,则会引发错误,而直接调用__repr__函数时,与任何其他函数一样,可以返回任何值

__repr__不仅仅是一个普通的方法,它是一个特殊的内置函数,看起来很像运算符。这些运营商提供的比任何方法都多。

当您调用c.__repr__()时,您正在调用方法部分。另一方面,当您呼叫repr(c)时,您已经呼叫了操作员。与__add__运算符相同。它可以被称为普通方法a.__add__(b),也可以像a + b一样用作运算符(这需要更多断言(

最新更新