在Python中,实例化对象时,实例对象会自动传递给类的初始化方法 __init__ 作为第一个参数 self。不需要显式传递 self 参数。
下面是一个解释:
member = Member(self.cardid, name, passwd, scores, regdate)
当你创建 Member 类的实例时,Python会自动调用 __init__ 方法,并将新创建的实例作为第一个参数 self 传递给它。因此,你只需传递除 self 之外的其他参数。
另外,之前我指出了代码中存在的问题。你应该将新创建的会员对象正确地添加到 self.members 字典中,而不是覆盖它。正确的实现如下:
def create_member(self):
name = input("请输入名字:")
passwd = input("请输入密码:")
passwd = self.is_tooshort(passwd)
passwd = self.to_md5(passwd)
scores = 0
regdate = time.localtime()
member = Member(self.cardid, name, passwd, scores, regdate)
self.members[self.cardid] = member # 将member加入字典
print(f"创建成功,卡号为 {self.cardid},关联用户 -> {name}")
self.log(f"开卡成功:{self.cardid} -> {name},时间:{time.strftime('%Y-%m-%d %H:%M:%S', regdate)}\n")
self.cardid += 1
这样可以确保每个新会员都正确地存储在 self.members 字典中。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |