-2

我需要表示我的数据类型 PS 没有前导和结束引号。
(所以'+'变成+)

我尝试覆盖repr但无法弄清楚如何正确地做到这一点。我的问题:

class E:                # Expression-Class
    pass

class AE(E):            # Arithmetic_Expression-Class
    pass

class BO(AE):           # Binary_Operation-Class
    pass

class P(BO):            # Plus-Class
    operator = PS()

class PS:               # Plus_Sign-Class
    def __repr__(self):
        return +        # <- obviously raises an error 
                        # how to return '+' string without the single quotes (so: '+' -> +)?
4

1 回答 1

3

__repr__必须返回一个字符串 ( str)。如果您返回'+',您将返回一个只有一个加号的字符串。如果你print()这样做,它周围不会有单引号。您看到单引号的唯一原因是打印它的不是打印值而是字符串的表示+

>>> class PS:
...   def __repr__(self):
...     return '+'
...
>>> a = PS()
>>> a
+
>>> print(a)
+
>>> repr(a)
'+'
于 2021-12-19T21:49:22.970 回答