面向对象之登录与修改密码

# 任务:定义一个用户类,用户名和密码是这个类的属性,实例化两个用户,分别有不同的用户名和密码
# 登陆成功之后才创建用户对象
# 设计一个方法 修改密码
import os
def login(name,pwd,filepath='userinfo.txt'):
with open(filepath,encoding='utf-8') as f:
for line in f:
username,password=line.strip().split('|')
if username==name and password==pwd:
return True
else:return False

class User:
def __init__(self,username,password):
self.username=username
self.password=password

def change_pwd(self):
oldpwd=input('请输入原密码:') #输入原密码,验证后再修改,常规!
newpwd=input('请输入新密码:')
flag=False
with open('userinfo.txt',encoding='utf-8') as f1, open('userinfo_bak','w',encoding='utf-8') as f2:
for line in f1:
username,password=line.strip().split('|')
if username==self.username and password==oldpwd:
line='%s|%s '%(username,newpwd) #注意此处必须加' ',否则不换行。
flag=True
f2.write(line)
os.remove('userinfo.txt')
os.rename('userinfo_bak','userinfo.txt')
return flag

name=input('请输入用户名:>>>')
pwd=input('请输入密码:>>>')
ret=login(name,pwd)
if ret:
print('登录成功!') #登录成功,才开始实例化。
obj=User(name,pwd)
res=obj.change_pwd()
if res:
print('密码修改成功!')
print(obj.__dict__) #通过对象名.__dict__就可以查看这个对象的属性和值
原文地址:https://www.cnblogs.com/qqq789001/p/13378739.html