class combattant(pygame.sprite.Sprite):
def __init__(self,img,posit):
pygame.sprite.Sprite.__init__(self)
self.image=marche[0]
self.image_pos=posit
self.face=0
def mov(self,direction):
if direction[K_LEFT]:
self.face=(self.face+1)%2
self.image_pos.x -= 1
self.image=marche[0+self.face]
print ('gauche')
if direction[K_RIGHT]:
print ("droit")
self.face=(self.face+1)%2
self.image_pos.x += 1
self.image=marche[2+self.face]
combattant.mov (tkey)
这是我的问题,当我运行包含它的程序时,我得到了这个:
Traceback (most recent call last):
File "F:\ISN\essai 2.py", line 63, in <module>
combattant.mov (tkey)
TypeError: mov() takes exactly 2 arguments (1 given)
Python似乎在考虑自我&#39;作为我需要给出的论点才能使它发挥作用。我尝试过使用alpha函数或在自我参数中放置一个空格,但当然我收到一条错误,上面写着&#39; Invalid Syntax&#39;并且alpha功能不会改变任何东西......也许我用错误的方式使用它,因为我是初学者...如果有人可以帮助我,那将是非常有帮助的!提前谢谢!
答案 0 :(得分:1)
在您的特定情况下,当您致电combatant.move()
时,您正在调用该类的实例上的类而不是。使用该方法的正确方法是首先创建一个实例。
通常,人们用大写字母命名他们的类,用小写字母命名他们的实例,以使这样的问题容易被发现。
例如:
class Combattant(...):
...
combattant = Combattant(...)
combattant.move(tkey)
需要self
的原因是,方法知道它们应用于哪个实例。这使得可以有多个类的实例。当你调用some_instance.some_method(...)
时,python会在调用方法时自动添加self
参数。