Python中使用面向对象实现用户的注册与登录
代码实现
#用户注册登录
class User:
def __init__(self, name, pwd):
self.name = name
self.pwd = pwd
class Account:
def __init__(self):
# 用户列表,数据格式:[user对象,user对象,user对象]
self.user_list = []
def login(self):
"""
用户登录,输入用户名和密码然后去self.user_list中校验用户合法性
:return:
"""
while True:
user_input = input('请输入您的姓名: (q/Q退出)').strip()
if user_input.upper() == 'Q':
break
pwd_input = input('请输入您的密码: ').strip()
for user in self.user_list:
if user.name == user_input and user.pwd == pwd_input:
print('登录成功')
break
else:
print('登录失败')
def register(self):
"""
用户注册,没注册一个用户就创建一个user对象,然后添加到self.user_list中,表示注册成功。
:return:
"""
#将account识别为模板
while True:
user_input = input('请输入您的姓名: (q/quit退出)').strip()
if user_input.upper() == 'Q':
break
pwd_input = input('请输入您的密码: ').strip()
o1 = User(user_input, pwd_input)
#判断是否为在用户列表内
for user in self.user_list:
if user.name == user_input:
print('用户名重复,请重试')
continue
self.user_list.append(o1)
def run(self):
"""
主程序
:return:
"""
func1 = {
'1': {'title':'登录','func':self.login},
'2':{'title':'注册','func':self.register},
}
messages = ';'.join([f'{k}-{v["title"]}' for k,v in func1.items()])
while True:
print(messages)
func_choice = input('请输入功能选项: (q/Q退出))').strip()
if func_choice.upper() == 'Q':
break
#判断输入
# TODO
func1[func_choice][1]()
if __name__ == '__main__':
obj = Account()
obj.run()