我尝试做一个函数,它接受一个消息列表和一个作者列表,并将每条消息放入其对应的作者的消息列表中。
class Author:
name = ""
msgs = []
files = []
class Message:
line = ""
time = datetime
author = ""
提到的功能
for au in authorList:
a = 0
for msg in msgList:
if au.name == msg.author:
a += 1
au.msgs.append(msg)
print(a)
for au in authorList:
print(len(au.msgs))
和程序的输出
a=396
a=349
745
745
该函数接受au.name和msg.author并对它们进行比较,如果它们相等,则msg存储在au.msgs列表中。每次向用户添加消息时,变量a都会递增,并且可以看出,对于第一个用户a = 396
和第二个用户a = 349
,其总和745,即msgList的大小。
问题是每个author.msgList结束保存消息总量。
我必须提到我在python中技能不高,所以它可能是一个简单的noob问题。
这是因为msgs
和files
是类变量,而不是实例变量,因此它们由Author
的所有实例共享。
您可以将它们定义为实例变量,如下所示:
class Author:
def __init__(self):
self.name = ''
self.msgs = []
self.files = []
正如TheGamer007所建议的那样,考虑一下https://www.geeksforgeeks.org/g-fact-34-class-or-static-variables-in-python/