【问题标题】:Need help printing result of __str__ function in Python需要帮助在 Python 中打印 __str__ 函数的结果
【发布时间】:2022-11-30 04:47:28
【问题描述】:

我正在处理类的问题,但我坚持定义 __str__ 函数,以便返回类中任何文本的大写版本。目前我有一个非常困难的代码,它可以在 PyCharm 中运行,但不能在我班级的自动检查系统中运行。我可以得到一些关于如何修复此代码的建议吗?

class X(str):
    def __str__(self, name):
        name = str.capitalize('hello')
        self.name = 'hello'
        return name
b = X('hello')
print(b.__str__('hello')) 

【问题讨论】:

  • 以及self 是如何工作的。这里发生了很多事情。
  • __str__ 几乎肯定不会像修改 self 那样有任何副作用。

标签: python class oop


【解决方案1】:

__str__ canonically 不接受任何参数。

因为你继承了str,你可能是说

class X(str):
    def __str__(self):
        return self.capitalize()

b = X('hello')
print(b.__str__())  
# or print(str(b))
# or print(b)

即以使用超类str的方法来处理对象的“固有”字符串数据的方式重写__str__魔术方法(它存在是因为您是str的子类)。

这打印出来

Hello

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 2021-01-29
    • 1970-01-01
    • 2020-08-13
    • 2013-02-12
    • 2013-06-17
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多