Python运行时访问指定对象:银行账户PIN验证后获取对应对象
实现PIN验证并获取对应Konto对象的方案
Got it,这事儿不难,咱们一步步来实现你要的功能——用户输入正确PIN后,就能拿到对应的账户对象并访问它的所有属性。下面是完整的实现思路和代码:
class Konto(object): def __init__(self, account_holder, balance, pin): self.account_holder = account_holder self.balance = balance self.pin = pin # 初始化你的账户列表(补全了第三个示例账户) kontoList = [] kontoList.append(Konto("Person1", 143541, 1223)) kontoList.append(Konto("Person2", 89765, 4567)) kontoList.append(Konto("Person3", 234500, 8901)) def login_and_get_account(): # 获取用户输入的PIN,转成整数和类里的pin类型匹配 user_input_pin = int(input("请输入四位PIN码:")) # 遍历账户列表找匹配的PIN for account in kontoList: if account.pin == user_input_pin: print("登录成功!账户详细信息:") # 直接输出所有属性,也可以把对象返回供后续操作 print(f"账户持有人:{account.account_holder}") print(f"账户余额:{account.balance}") print(f"PIN码:{account.pin}") return account # 没找到匹配PIN的情况 print("PIN码错误,登录失败!") return None # 执行登录逻辑,拿到登录后的账户对象 current_account = login_and_get_account() # 后续可以用这个对象做更多操作,比如修改余额 if current_account: current_account.balance += 500 print(f"账户余额已更新:{current_account.balance}")
关键逻辑说明:
- 输入处理:用
input()获取用户输入,转成整数保证和Konto类里的pin类型一致,避免类型不匹配导致的错误。 - 遍历匹配:循环遍历账户列表,逐个对比对象的
pin属性和用户输入,找到匹配项后就能直接访问该对象的所有属性。 - 对象复用:如果需要后续对登录后的账户做操作(比如转账、改余额),直接返回这个对象就行,这样在运行时就能一直持有它。
小优化建议:
可以给Konto类加一个__str__方法,让打印对象时更简洁友好:
def __str__(self): return f"[账户信息] 持有人:{self.account_holder},余额:{self.balance}"
之后找到匹配对象时,直接print(account)就能输出格式化的信息啦~
内容的提问来源于stack exchange,提问作者Rise Blink
相关产品推荐
相关产品推荐

