【问题标题】:How to get a class to print out multiple parameters (__str__ function question)如何让一个类打印出多个参数(__str__ 函数题)
【发布时间】:2020-09-19 02:15:53
【问题描述】:

我正在创建一个使用 str() 函数打印出其内容的类。但是,我似乎只能让它打印出其中一个参数?当我要求它返回 self.num 和 self.word 时,它会引发错误。

有人能帮我解决这个问题吗?

class Test:
    def __init__ (self, word, num):
        self.word = word
        self.num = num

    def __str__(self):
        return self.word, self.num

a = Test('Word', '10')
print(a) 

【问题讨论】:

  • __str__ 必须返回一个str;它不能返回一个元组。您必须先创建一个字符串。
  • 你知道如何格式化一个字符串的几个变量吗?
  • 对不起,我不明白,我不知道如何格式化一个字符串的几个变量

标签: python python-3.x string class


【解决方案1】:

__str__ 方法应返回单个字符串。要显示多个变量,请将它们连接(通过 +,如果它们是字符串)或将它们格式化(通过 f-string literalsformat string templatesprintf %-formatting)成单个字符串。

class Test:
    def __init__ (self, word, num):
        self.word = word
        self.num = num

    def __str__(self):
        # f-string literal - ``{...}`` are replacement fields
        return f'{self.word} => {self.num}'

a = Test('Word', '10')
print(a)  # Word => 10

【讨论】:

  • 谢谢你的作品!我不确定我是否完全理解它(我不知道连接是什么意思),但我仍然是初学者,我可以研究一下。感谢您的帮助!
  • 连接意味着通过将两个现有字符串彼此附加来创建一个新字符串。例如,您可以将__str__ 定义为return self.word + self.num。请注意,您通常不能将其他类型连接到字符串,例如 'Word' + 10 将不起作用(注意 10 没有被引用 - 它是一个整数)。
  • @saeley7 很高兴能帮上忙。如果它解决了您的问题,请考虑投票和/或接受此答案。详情请见What should I do when someone answers my question?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 1970-01-01
  • 2021-05-26
  • 2020-10-08
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多