pycharm和python解释器的return语句有何不同?

问题描述 投票:0回答:1

[当我在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
python-3.x pycharm return repr
1个回答
0
投票

错误非常清楚这里是什么问题。您的__repr__方法未返回字符串,而是返回了字典。

尽管在docs中不是完全明确的,但您必须从__repr__返回一个字符串。

为什么它在PyCharm中什么也不返回,而不是我无法告诉你的错误。


0
投票

当您在Python REPL中输入表达式时,它会评估该表达式并尝试打印出结果的repr()repr()调用对象的__repr__(),检查返回值是否为字符串并引发错误。

在REPL之外(例如,当您在PyCharm中运行它时),表达式结果只是被丢弃,因此不会引发错误。

© www.soinside.com 2019 - 2024. All rights reserved.