【发布时间】:2020-08-26 01:21:45
【问题描述】:
假设我有一堂课:
class Band():
def __init__(self, name, members):
self.name = name
self.members = members
def __repr__(self):
return f'''{self.name} [{', '.join(self.members)}]'''
如果我像这样创建它的两个实例:
Band_A = Band('Band A', ['Tom', 'Josh'])
Band_B = Band('Band B', ['Mark', 'Steve'])
当我打印它们时,我得到了预期的结果:
Band A [Tom, Josh]
Band B [Mark, Steve]
但是当我创建一个包含自身的类的实例时,它就不起作用了。
Band_C = Band('Band C', [Band_A, Band_B])
我收到此错误:
Traceback (most recent call last):
File "c:/Users/IcyTear/Desktop/test.py", line 16, in <module>
print(Band_C)
File "c:/Users/IcyTear/Desktop/test.py", line 7, in __repr__
return f'''{self.name} [{', '.join(self.members)}]'''
TypeError: sequence item 0: expected str instance, Band found
有没有办法让它工作以显示这个?
Band C [Band A [Tom, Josh], Band B [Mark, Steve]]
【问题讨论】:
-
', '.join期望它的参数是 strings 的可迭代 -
你必须加入会员的
repr()s。