python - 如何在Python中修复 “TypeError”?

标签 python python-3.x function compiler-errors syntax-error

我是几天前刚开始学习Python的新手,我尝试制作一个简单的RPG代码,但最近遇到了麻烦,它不断让我返回TypeError:generate_damage()缺少1个必需的位置参数:'自'。有人知道发生了什么吗?

Main.py

from Classes.game import player, bcolors

magic = [{"name": "Tackle", "cost": 1, "dmg": 4},
         {"name": "Ember", "cost": 3, "dmg": 6},
         {"name": "Leech", "cost": 4, "hp": +5, "dmg": 4},
         {"name": "Explosion", "cost": 5, "hp": -10, "dmg": 30}]

player(100, 20, 5, 10,magic)

print(player.generate_damage())

Game.py
import random 

class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'

class player:
    def __init__(self, hp, mp, atk, df, mag):
        self.maxhp = hp
        self.hp = hp
        self.maxmp = mp
        self.mp = mp
        self.atkw = atk - 10
        self.atks = atk + 10
        self.df = df
        self.mag = mag
        self.actions = ["Attack", "Magic"]

    def generate_damage(self):
        return random.randrange(self.atkw, self.atks)

我在以下方面遇到问题:
print(player.generate_damage())

由于它不断返回TypeError:generate_damage()缺少1个必需的位置参数:“self”

最佳答案

您必须实例化一个类,才能使用它的类方法

magic = [{"name": "Tackle", "cost": 1, "dmg": 4},
         {"name": "Ember", "cost": 3, "dmg": 6},
         {"name": "Leech", "cost": 4, "hp": +5, "dmg": 4},
         {"name": "Explosion", "cost": 5, "hp": -10, "dmg": 30}]

p = player(100, 20, 5, 10,magic)

print(p.generate_damage())

关于python - 如何在Python中修复 “TypeError”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61043476/

相关文章:

python - Django - 本地主机上的单元测试在主数据库中创建对象,但稍后在方法中未在测试数据库中找到它们

python - Pandas 数据框问题。不知道如何清理和管理一种 block 状矩阵

python - 在 django 中使用 GET 变量

python - 在 Python 中将 1 加到 16 字节的数字

python - 在数据框中找到错误的数据点python

python - 如何从两端迭代一个序列?

python - paramiko python 模块卡在 stdout.read()

javascript - 函数返回正确的值和 'undefined'

php - 如何获取将州名称转换为相应缩写的函数

php - 如何从 PHP 中的用户输入中删除 URL 协议(protocol)和斜杠