Python类方法调用报错:缺少self参数,求助解决方案
问题排查与解决方法
错误原因
你出错的核心原因是没有创建类的实例,而是直接将类本身赋值给了dice变量。当通过类直接调用实例方法roll时,Python无法自动传入代表实例对象的self参数,因此会抛出TypeError提示缺少self。
解决步骤
1. 正确创建类的实例
将代码中的:
dice = Dice
修改为:
dice = Dice()
添加括号后,dice就成为了Dice类的一个实例对象,此时调用dice.roll(),Python会自动把该实例作为self参数传入方法中,无需手动传递。
2. 代码优化(规范写法)
另外可以优化代码的规范性:
- 模块导入语句应该放在文件顶部,不要在方法内部导入;
- 简化
roll方法的逻辑,去掉冗余变量。
修正后的完整代码:
from random import choice class Dice: def roll(self): return (choice(range(1, 7)), choice(range(1, 7))) # 创建实例 dice = Dice() # 调用方法 result = dice.roll() print(result)
内容的提问来源于stack exchange,提问作者Muhammad Tayyab Ullah
相关产品推荐
相关产品推荐

