创建类并在不带引号的情况下表示它
Posted
技术标签:
【中文标题】创建类并在不带引号的情况下表示它【英文标题】:Create class and represent it without quotation marks 【发布时间】:2022-01-21 16:49:09 【问题描述】:我需要表示我的数据类型 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: '+' -> +)?
【问题讨论】:
字符串'+'
没有单引号。了解这一点非常重要
是的!字符串“+”只包含一个元素,即不带引号的字符串“+”。
【参考方案1】:
__repr__
必须返回一个字符串 (str
)。如果您返回'+'
,您将返回一个只有一个加号的字符串。如果你print()
它,它周围不会有单引号。您看到单引号的唯一原因是,无论打印什么,它都不是打印值,而是字符串 +
的表示形式。
>>> class PS:
... def __repr__(self):
... return '+'
...
>>> a = PS()
>>> a
+
>>> print(a)
+
>>> repr(a)
'+'
【讨论】:
我傻了,我没有调整一些参数,现在可以了。非常感谢!以上是关于创建类并在不带引号的情况下表示它的主要内容,如果未能解决你的问题,请参考以下文章