Python子类调用父类hand_score方法报AttributeError无属性错误
错误原因
你的代码没有建立正确的类继承关系:
- 定义
Dealer类时你指定的父类是object,和Hand类不存在继承关联 - 你在
Dealer.__init__中直接写Hand.__init__(self),本质是把Hand类的__init__当成普通函数调用,把当前Dealer实例传进去执行,只会给实例绑定hand属性,不会继承Hand类定义的其他实例方法,这就是为什么你能正常访问dealer.hand,但调用dealer.hand_score()会报属性不存在的错误。
修复方法
修改Dealer类的定义,显式声明它继承自Hand类,同时推荐使用super()调用父类初始化方法,避免硬编码父类名带来的维护问题,修复后的代码如下:
class Hand(object): def __init__(self): self.hand = [] def hand_score(self): # 保留你原有的手牌计分逻辑即可 ... class Dealer(Hand): # 声明Dealer继承Hand类 def __init__(self): super().__init__() # 调用父类初始化逻辑
修复完成后,Dealer实例会自动继承Hand类的所有属性和方法,可正常调用hand_score()。
内容的提问来源于stack exchange,提问作者Lucas Teixeira
相关产品推荐
相关产品推荐

