[当我在pycharm中运行此代码时,我调用了我的对象,但是repr不返回任何内容,并且在我的python解释器中,它返回TypeError: __repr__ returned non-string (type NoneType)
。为什么会这样?
class DictionnaireOrdonne:
liste_clefs = []
liste_valeurs = []
def __init__(self, **clefs_valeurs):
self.clefs_valeurs = clefs_valeurs
self._dictionnaire = {}
def __repr__(self):
return self.clefs_valeurs
def __getitem__(self, key):
return self._dictionnaire[key]
def __setitem__(self, key, value):
self._dictionnaire[key] = value
test = DictionnaireOrdonne(one=1, two=2)
test
错误非常清楚这里是什么问题。您的__repr__
方法未返回字符串,而是返回了字典。
尽管在docs中不是完全明确的,但您必须从__repr__
返回一个字符串。
为什么它在PyCharm中什么也不返回,而不是我无法告诉你的错误。
当您在Python REPL中输入表达式时,它会评估该表达式并尝试打印出结果的repr()
。 repr()
调用对象的__repr__()
,检查返回值是否为字符串并引发错误。
在REPL之外(例如,当您在PyCharm中运行它时),表达式结果只是被丢弃,因此不会引发错误。