我试图做一个函数,它接收消息列表和作者列表,并将每条消息放入相应作者的消息列表中。
def make_call_from_phone(self,extension):
self.window.find_element_by_id("DialPad").click() ##Clicks on dialpad
self.driver.implicitly_wait(5)
time.sleep(10)
self.window.find_element_by_id("DialPadTextBox").send_keys(extension)
##Enters extension
time.sleep(10)
self.window.find_element_by_id("DialPadButton").click() ##Clicks on call
button
提到的功能
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))
该函数采用au.name和msg.author进行比较,如果它们相等,则将msg存储在au.msgs列表中。
每次向用户添加一条消息时,变量a都会增加,并且可以看到,第一个用户a=396
a=349
745
745
和第二个用户a = 396
的总和为745,即msgList。
问题在于,每个author.msgList结束时都保留了全部消息。
我不得不提到我对python的了解不高,所以这可能是一个简单的noob问题。
答案 0 :(得分:3)
这是因为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/