【问题标题】:TypeError: __str__ returned non-string (type NoneType) in outputTypeError: __str__ 在输出中返回非字符串(NoneType 类型)
【发布时间】:2021-05-30 04:35:43
【问题描述】:
class Point4D(object):
    def __init__(self,w, x, y, z):
        self.w = w
        self.x = x
        self.y = y
        self.z = z

    def __str__(self):
        print('{}, {}, {}, {}'.format(self.w, self.x, self.y, self.z))

my_4d_point = Point4D(1, 2, 3, 1)
print(my_4d_point) 

我得到输出 1 2 3 1 ,但我不断收到错误 TypeError: __str__ returned non-string (type NoneType) in line 12. 为什么?

【问题讨论】:

  • __str__ 应该返回一个字符串。
  • 因为你的__str__函数返回None

标签: python strerror


【解决方案1】:

__str__ 应该返回一个字符串。您的函数当前返回None。打印字符串不会返回字符串。

你快到了。将其更改为以下内容:

    def __str__(self):
        return '{}, {}, {}, {}'.format(self.w, self.x, self.y, self.z)

【讨论】:

    【解决方案2】:

    使用return。错误是因为您打印,但没有返回任何内容。

    def __str__(self):
            return('{}, {}, {}, {}'.format(self.w, self.x, self.y, self.z))
    

    【讨论】:

      【解决方案3】:

      方法_str_应该返回(不是打印)对象的字符串表示。

      【讨论】:

        【解决方案4】:

        您必须使用return 语句而不是print,因为__str__ 函数应该返回string

        class Point4D():
            def __init__(self,w, x, y, z):
                self.w = w
                self.x = x
                self.y = y
                self.z = z
        
            def __str__(self):
                return('{}, {}, {}, {}'.format(self.w, self.x, self.y, self.z))
        
        my_4d_point = Point4D(1, 2, 3, 1)
        print(my_4d_point) 
        

        输出:

        1, 2, 3, 1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-02
          • 2018-04-17
          • 1970-01-01
          • 2021-11-09
          • 2020-04-19
          • 1970-01-01
          相关资源
          最近更新 更多