当使用 "print "与 "return "命令时,在输出中产生类型错误的魔术函数__str__ [重复]

问题描述 投票:0回答:1

我想知道为什么输出的结果会对代码中定义的某一类对象返回一个错误。__str__ 命令。类型错误会在 __str__ 与print相对于return命令一起使用。

class Card():

    def __init__(self,suit,rank):
        self.suit = suit
        self.rank = rank

    def __str__(self):
        print (f'{self.rank} of {self.suit}')

随后的命令如下--------。

test_card = Card ('Hearts',"Three")
print (test_card)

输出打印如下

Three of Hearts
--------------------------------------------------------------------------- TypeError
                                 Traceback (most recent call last) <ipython-input-55-483c6e59f50e> in <module>
      1 test_card = Card ('Hearts',"Three")
----> 2 print (test_card)

TypeError: __str__ returned non-string (type NoneType)
-------------------------------------------------------------------------------

如果我改变了 __str__ 功能,以 return f'{self.rank} of {self.suit}' ,输出是简单的 红桃三.

python class return
1个回答
4
投票

错误信息准确地告诉你是什么问题,你已经找到了修复方法--神奇的 __str__ 功能应该是 返回 该字符串,而不是 印制 弦,并返回 None.

© www.soinside.com 2019 - 2024. All rights reserved.