创建类并在不带引号的情况下表示它

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)
'+'

【讨论】:

我傻了,我没有调整一些参数,现在可以了。非常感谢!

以上是关于创建类并在不带引号的情况下表示它的主要内容,如果未能解决你的问题,请参考以下文章

我可以创建一个接口对象并在不覆盖它的情况下访问实现该接口的 java 文件的功能吗?

Jquery:在div的悬停时附加一个类并在不悬停时删除

SQL中啥情况下用引号

如何在不输入双引号的情况下制作搜索栏?

如何在不带整个库的情况下将场景或影片剪辑导出为 SWF?

如何在不转义双引号的情况下使用 RestTemplate 发送 JSON 发布请求?