Python 调用后设置 class 变量
Python set class variable after calling
我正在使用 pygame 模块制作游戏并且我有一个玩家 class:
class Player(pygame.sprite.Sprite):
def __init__(self, name, position, axsis, movment, idle, walk = None, jump = None):
pygame.sprite.Sprite.__init__(self)
self.name = name
self.idle = idle
self.walk = walk
self.jump = jump
self.image = self.idle[0]
self.movment = movment
self.left, self.right = axsis
self.pos = vec(position[0],position[1])
我正在使用 json 数据类型添加我的角色,并在调用 class 后尝试添加动画,但我做不到
示例代码
class Game():
def __init__(self,json_file):
self.player_attribute = json_file
def character(self):
self.npc = []
for i in self.player_attribute:
self.npc.append(Player(i['name'],
i['position'],
i['axsis'],
i['movment']))
self.animation()
return self.npc
def add_animation(self):
for i in self.npc:
i.idle = "images\ghost.png"
def main_loop()
self.character
当我尝试这个时出现错误
self.image = self.idle[0]
TypeError: init() missing 1 required positional argument: 'idle'
如何在调用 class
后添加 class 的变量
不清楚 'idle' 参数在您的代码中应该代表什么。但是,出现异常的原因是您在构造 Player 对象时没有为 'idle' 传递任何参数。你需要这样的东西:
self.npc.append(Player(i['name'],
i['position'],
i['axsis'],
i['movment'],
i['idle']))
您可以这样做,也可以将默认参数传递给 Player 构造函数,以便在初始化时不需要显式传递 idle:
class Player(pygame.sprite.Sprite):
def __init__(self, name, position, axsis, movment, idle=[1], walk = None, jump = None):
您可以稍后修改它的内容,但是我建议您小心将该对象属性实例化为什么,因为它可能稍后会反咬您一口(类型错误或值错误)。
如果是我,我会把它移出 init,或者直到所有值及其类型都已知后才构建对象(请参阅构建器设计模式)。
希望这对您有所帮助 :) 干杯!
我正在使用 pygame 模块制作游戏并且我有一个玩家 class:
class Player(pygame.sprite.Sprite):
def __init__(self, name, position, axsis, movment, idle, walk = None, jump = None):
pygame.sprite.Sprite.__init__(self)
self.name = name
self.idle = idle
self.walk = walk
self.jump = jump
self.image = self.idle[0]
self.movment = movment
self.left, self.right = axsis
self.pos = vec(position[0],position[1])
我正在使用 json 数据类型添加我的角色,并在调用 class 后尝试添加动画,但我做不到
示例代码
class Game():
def __init__(self,json_file):
self.player_attribute = json_file
def character(self):
self.npc = []
for i in self.player_attribute:
self.npc.append(Player(i['name'],
i['position'],
i['axsis'],
i['movment']))
self.animation()
return self.npc
def add_animation(self):
for i in self.npc:
i.idle = "images\ghost.png"
def main_loop()
self.character
当我尝试这个时出现错误
self.image = self.idle[0] TypeError: init() missing 1 required positional argument: 'idle'
如何在调用 class
后添加 class 的变量不清楚 'idle' 参数在您的代码中应该代表什么。但是,出现异常的原因是您在构造 Player 对象时没有为 'idle' 传递任何参数。你需要这样的东西:
self.npc.append(Player(i['name'],
i['position'],
i['axsis'],
i['movment'],
i['idle']))
您可以这样做,也可以将默认参数传递给 Player 构造函数,以便在初始化时不需要显式传递 idle:
class Player(pygame.sprite.Sprite):
def __init__(self, name, position, axsis, movment, idle=[1], walk = None, jump = None):
您可以稍后修改它的内容,但是我建议您小心将该对象属性实例化为什么,因为它可能稍后会反咬您一口(类型错误或值错误)。
如果是我,我会把它移出 init,或者直到所有值及其类型都已知后才构建对象(请参阅构建器设计模式)。
希望这对您有所帮助 :) 干杯!