0
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.为什么?

4

4 回答 4

2

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

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

    def __str__(self):
        return '{}, {}, {}, {}'.format(self.w, self.x, self.y, self.z)
于 2021-05-30T04:43:15.977 回答
1

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

def __str__(self):
        return('{}, {}, {}, {}'.format(self.w, self.x, self.y, self.z))
于 2021-05-30T04:40:37.623 回答
0

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

于 2021-05-30T04:44:14.380 回答
-1

您必须使用该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
于 2021-05-30T04:42:16.933 回答