-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。返す'+'場合は、プラス記号が 1 つだけ含まれた文字列を返します。もしそうならprint()、それを一重引用符で囲むことはありません。一重引用符が表示される唯一の理由は、表示されているものは値ではなく文字列の表現であるため+です。

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