我正在尝试传递另一个对象的类中的对象实例列表。当我直接这样做 - 一切都按照应有的方式工作。当他们通过列表包含在元组中时,它不起作用。 比较输出:
报告:
记录:无,无,无
记录:E001,IPTV和远程信息处理,11月20日:一切都很悲伤
记录:E002,DPI,无
report1 :
无
(< 主。记录对象位于0x7f7b88d65908>,< main .Record对象位于0x7f7b88d65940>,< main .Record对象位于0x7f7b88d65978>)
无
怎么可能?以及如何解决?
class Ticket:
tickets = []
def __init__(self, id=None, group=None):
self.id = id
self.group = group
self.tickets.append(self)
class Record(Ticket):
records = []
def __init__(self, ticket=None, comment=None):
self.ticket = ticket
self.comment = comment
self.records.append(self)
def __str__(self):
if self.ticket != None:
return 'Record: ' + '{0}, {1}, {2}'.format(self.ticket.id, self.ticket.group, self.comment)
class Report:
def __init__(self, *args):
self.records = list(args)
def show_all(self):
for record in self.records:
print(record)
if __name__ == '__main__':
t1 = Ticket('E001', 'IPTV and telematics')
t2 = Ticket('E002', 'DPI')
rec1 = Record(Ticket())
rec2 = Record(t1, 'at Nov 20: everything is sad')
rec3 = Record(t2)
report = Report(rec1,rec2,rec3)
print(report.show_all())
report1 = Report(tuple(rec1.records))
print(report1.show_all())
答案 0 :(得分:0)
在第一种情况下,您将Record实例作为单独的参数传递。在这种情况下,args
将是一个包含3个参数的元组。
在第二种情况下,您传递了一个参数,一个元组。与第一种情况一样,args
将是一个包含给定参数的元组:包含Record实例的元组。
如果您需要传递一个列表(或一个元组),意图将每个列表项解释为一个单独的参数,use *
to unpack the list:
report1 = Report(*rec1.records)