getattr 和 hasattr
import hashlib
class Account:
salt = b'2020-20-20'
userinfo = {}
def __init__(self):
self.name = None
self.pwd = None
def register(self):
val = hashlib.md5(Account.salt)
val.update(self.pwd.encode('utf-8'))
Account.userinfo[self.name] = val.hexdigest()
print('注册成功')
def login(self):
if self.name in self.userinfo:
val = hashlib.md5(Account.salt)
val.update(self.pwd.encode('utf-8'))
if Account.userinfo[self.name] == val.hexdigest():
print('登录成功')
else:
print('密码错误')
self.pwd = input('请输入密码:')
else:
print('用户名错误')
# 主代码,反射的应用
def run(self):
func_list = ['register', 'login']
print(
"""
支持的的功能有:
1、注册
2、登录
""")
choice = eval(input('请输入你选择功能的序号:'))
if isinstance(choice, int) and choice in [1, 2]:
# 判断是否有该属性
if hasattr(self, func_list[choice-1]):
self.name = input('请输入用户名: ')
self.pwd = input('请输入密码: ')
func = getattr(self, func_list[choice-1])
func()
else:
print('请输入正确序号')
if __name__ == '__main__':
while True:
obj = Account()
obj.run()