You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入ATM类至Virtual Doctor后函数无响应问题排查

问题排查与解决方案:导入ATM的Bank类后调用start()无响应

核心原因分析

你遇到的问题根源出在ATM代码里的start()方法——里面的if __name__ == '__main__':判断限制了代码的执行场景:

这个判断只在当前脚本被直接运行(比如你单独跑ATM.py)时才会生效,当你把Bank类导入到Virtual Doctor程序中时,ATM脚本的__name__会变成它的模块名NewATM,而非__main__,所以start()方法里的登录逻辑根本不会被执行,程序直接跳过这一步继续往下走,看起来就像是调用b2.start()后无响应直接退出。

另外还有个小问题:原ATM代码里调用类方法时用的是全局实例b1(比如b1.pinpasscheck(...)),这在单独运行ATM时没问题,但当你在Virtual Doctor里创建新的b2实例时,这些调用会指向错误的实例,可能导致后续逻辑混乱。


分步修复方案

1. 修正ATM的start()方法和内部调用

把start()里的if __name__ == '__main__':去掉,确保调用start()时总能执行登录逻辑;同时把所有用b1调用方法的地方改成用self(指向当前实例):

def start(self):
    print("\t\t=== Welcome to ATM ===")
    inputpin = input("Enter your pin :")
    inputpass = input("Enter your password :")
    self.pinpasscheck(inputpin, inputpass)  # 用self代替b1

def pinpasscheck(self,pin,passw):
    # ... 原有代码 ...
    if inputpass==userpass[index]:
        print("Login Succeeded !")
        flag= True
        self.operationlist(index)  # 用self代替b1
    # ... 原有代码 ...

def operationlist(self,indexval):
    # ... 原有代码 ...
    elif useroption == 2:
        amount= int(input("\nEnter amount you want you want to withdraw : Rs"))
        self.withdraw(amount,index)  # 用self代替b1
    # ... 原有代码 ...

def withdraw(self, amt, index):
    # ... 原有代码 ...
    print("Your remaining balance is: ", userbalance[index])
    self.operationlist(index)  # 用self代替b1

2. 调整ATM脚本的主程序入口

把原来ATM脚本末尾的实例创建和启动代码放到if __name__ == '__main__':下,这样只有单独运行ATM时才会自动启动,被导入时不会执行:

if __name__ == '__main__':
    b1 = Bank()
    b1.start()

3. 验证Virtual Doctor中的调用

现在在Virtual Doctor里调用b2.start(),就会正常弹出ATM的登录界面了。后续你可以在判断完疾病后,直接调用b2.withdraw(扣款金额, 用户索引)来实现购药金额扣除功能(记得要确保用户已经登录,拿到正确的用户索引)。


额外优化建议

  • 把全局的userpin、userpass、userbalance等数据改成Bank类的类属性,或者用字典存储(比如users = [{"pin": "1234", "pass": "1234", "name": "Rishabh", "balance": 20500}, ...]),这样更符合面向对象的设计,也避免全局变量带来的潜在问题。
  • 如果不需要在Virtual Doctor里走完整的ATM操作流程,你可以给Bank类新增一个专门的扣款方法(比如deduct_medication_fee(self, amount, index)),直接扣除金额而不进入操作菜单,提升用户体验。

内容的提问来源于stack exchange,提问作者Siddharth Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:11:44