Python TypeError:player#u attack()缺少1个必需的位置参数:';自我';
我不断地遇到这个错误,我完全不知道为什么,我有3个文件互相导入信息,但是这个主文件只从monster_01.py和它的player.py中提取信息Python TypeError:player#u attack()缺少1个必需的位置参数:';自我';,python,windows,python-3.x,Python,Windows,Python 3.x,我不断地遇到这个错误,我完全不知道为什么,我有3个文件互相导入信息,但是这个主文件只从monster_01.py和它的player.py中提取信息 TypeError: player_attack() missing 1 required positional argument: 'self' ---主代码--- 我已经在这段代码上下写了一百遍了,如果有任何帮助,我将不胜感激。问题在于您的获取玩家\u攻击方法: def get_player_attack(self): player_a
TypeError: player_attack() missing 1 required positional argument: 'self'
---主代码---
我已经在这段代码上下写了一百遍了,如果有任何帮助,我将不胜感激。问题在于您的
获取玩家\u攻击方法:
def get_player_attack(self):
player_attack()
它调用player\u attack
,就好像它是一个独立的函数,而不是另一种方法。但是player\u attack
是类player
的一种方法,因此只能在player
的实例上调用
该函数的调用方式如下:
self.player_attack()
还有,像这样的东西:
if self.roll == 2 or 4 or 6 :
这只是一个有待解决的问题。应写为:
if self.roll in (2, 4, 6):
否则,if语句的条件将被解释为:
if (self.roll == 2) or (4) or (6):
它将始终计算为True
。有关详细信息,请参阅
最后,您不应该将所有方法放在另一个名为battle
的函数中。我不知道您想在这里做什么,但方法定义应该就在类标题下:
class MyClass: # Class header
def method1(self): # Definition of the first method
...
def method2(self): # Definition of the next method
...
...
我真的认为阅读一些关于Python类和OOP的教程对您来说是很好的。以下是一些帮助您开始的方法:
问题在于您的获取玩家\u攻击方法:
def get_player_attack(self):
player_attack()
它调用player\u attack
,就好像它是一个独立的函数,而不是另一种方法。但是player\u attack
是类player
的一种方法,因此只能在player
的实例上调用
该函数的调用方式如下:
self.player_attack()
还有,像这样的东西:
if self.roll == 2 or 4 or 6 :
这只是一个有待解决的问题。应写为:
if self.roll in (2, 4, 6):
否则,if语句的条件将被解释为:
if (self.roll == 2) or (4) or (6):
它将始终计算为True
。有关详细信息,请参阅
最后,您不应该将所有方法放在另一个名为battle
的函数中。我不知道您想在这里做什么,但方法定义应该就在类标题下:
class MyClass: # Class header
def method1(self): # Definition of the first method
...
def method2(self): # Definition of the next method
...
...
我真的认为阅读一些关于Python类和OOP的教程对您来说是很好的。以下是一些帮助您开始的方法:
不清楚您在战斗中试图做什么()。您没有定义self
参数,但也没有使用@static decorator表示希望它是一个静态函数。您已经在战斗中定义了玩家_攻击,所以它不能是实例方法。语法不正确
如果您想让battle()成为一个实例方法,请添加一个self参数并提供一个方法体或过程,然后使玩家的攻击缩进。不清楚您在battle()中要做什么。您没有定义self
参数,但也没有使用@static decorator表示希望它是一个静态函数。您已经在战斗中定义了玩家_攻击,所以它不能是实例方法。语法不正确
如果您打算将battle()作为实例方法,请添加一个self参数并提供一个方法主体或过程,然后使玩家的攻击缩进。choice(choice)
正在调用类方法,并将类方法作为参数。只要做choice()
。Self是一个在幕后设置的参数choice(choice)
调用class方法时使用class方法作为参数。只要做choice()
。赛尔夫是一个背景下的论点我认为这里有一个更大的问题。这些东西实际上都不是方法;它们都是在battle
中定义的本地函数。所以,仅仅添加self.
就会得到一个不同的例外。我在发布之后才注意到这一点。我真的不知道OP想用战斗做什么,所以我只想指出问题所在。好了,你的答案现在涵盖了OP遇到的第一个问题,以及他最有可能面临的下两个问题,所以…很难克服。我想这里有一个更大的问题。这些东西实际上都不是方法;它们都是在battle
中定义的本地函数。所以,仅仅添加self.
就会得到一个不同的例外。我在发布之后才注意到这一点。我真的不知道OP想用战斗做什么,所以我只想指出问题所在。好吧,你的答案现在涵盖了OP遇到的第一个问题以及他最有可能面临的下两个问题,所以…很难克服。