Python:如何创建仅接受≥5000值的Player类deposit实例属性?
问题分析
你的代码核心问题是:当传入的deposit小于5000时,else分支仅打印提示,并未给self.deposit赋值,导致实例缺少该属性,后续访问自然触发AttributeError。
解决方案
方案1:抛出异常阻止非法实例创建
这种方式最严谨,不符合条件时直接终止实例创建,从根源避免属性缺失问题:
class Player: def __init__(self, deposit): # 先验证是否为整数 if not isinstance(deposit, int): raise TypeError("存款金额必须是整数") if deposit >= 5000: self.deposit = deposit else: raise ValueError('最低存款金额为5000') # 使用示例 try: pl = Player(4000) except ValueError as e: print(e) # 输出:最低存款金额为5000 # 此时pl不会被创建,无属性访问问题
方案2:自动设置合法值并提示用户
如果不想抛出异常,可以自动将存款设为最低要求并告知用户,确保实例始终拥有deposit属性:
class Player: def __init__(self, deposit): if not isinstance(deposit, int): raise TypeError("存款金额必须是整数") if deposit >= 5000: self.deposit = deposit else: print('最低存款金额为5000,已自动设置为5000') self.deposit = 5000 # 使用示例 pl = Player(4000) print(pl.deposit) # 输出:5000
方案3:循环提示用户输入有效值
适合交互式场景,直到用户输入合法值为止:
class Player: def __init__(self, deposit=None): while True: # 若初始化未传入值,或之前输入无效,重新获取输入 if deposit is None: deposit = input("请输入存款金额:") try: deposit = int(deposit) if deposit >= 5000: self.deposit = deposit break else: print('最低存款金额为5000,请重新输入') deposit = None except ValueError: print('存款金额必须是整数,请重新输入') deposit = None # 使用示例 pl = Player(4000) # 会提示重新输入,直到符合要求 print(pl.deposit) # 此时一定存在合法值
内容的提问来源于stack exchange,提问作者cardinal2000
相关产品推荐
相关产品推荐

