如何在python中打印类的属性(即列表)
我想知道如何打印一个类的属性(它是另一个类的列表)行中的一个项。代码如下所示:如何在python中打印类的属性(即列表),python,Python,我想知道如何打印一个类的属性(它是另一个类的列表)行中的一个项。代码如下所示: class A: def __init__(self, i): self.index = i def __str__(self): return str(self.index) __repr__ = __str__ class B: def __init__(self): self.b = [] d
class A:
def __init__(self, i):
self.index = i
def __str__(self):
return str(self.index)
__repr__ = __str__
class B:
def __init__(self):
self.b = []
def load(self):
for i in range(3):
a = A(i)
self.b.append(a)
def __str__(self):
# My 1st solution
return self.b
# My 2nd solution
for i in self.b:
print(i)
__repr__ = __str__
b = B()
b.load()
print(b) # TypeError: __str__ returned non-string (type list)
def __str__(self):
return '\n'.join([str(x) for x in self.b])
预期产出:
0
1
2
您可以这样做:
class A:
def __init__(self, i):
self.index = i
def __str__(self):
return str(self.index)
__repr__ = __str__
class B:
def __init__(self):
self.b = []
def load(self):
for i in range(3):
a = A(i)
self.b.append(a)
def __str__(self):
# My 1st solution
return self.b
# My 2nd solution
for i in self.b:
print(i)
__repr__ = __str__
b = B()
b.load()
print(b) # TypeError: __str__ returned non-string (type list)
def __str__(self):
return '\n'.join([str(x) for x in self.b])
这将使
中的每个self.b
在加入之前变成一个str
有什么不清楚的错误?\uuuu str\uuuuuu
和\uuuuu repr\uuuuuuu
都应该返回一个字符串,而不是一个列表。这个注释意味着(也)不要在\uuuuuu str\uuuuuuuuuuuu>方法中打印,只需返回字符串。你不需要创建一个新的列表,join
将使用a-返回'\n'。join(str(thing)表示self.b中的thing)