我正在开发pyglet游戏,这是第一次,虽然通常我会使用pygame
我正在尝试在pyglet中进行子类化。
class menu(pyglet.sprite.Sprite):
def __init(self, *args, **kwargs):
super(menu, self).__init__(self, *args, **kwargs)
self.labels = {}
class pause_menu(menu):
def __init__(self, *args, **kwargs):
super(pause_menu, self).__init__(self, *args, **kwargs)
self.labels['resume'] = pyglet.text.Label('Resume Game', font_name='Times New Roman', font_size=36, x=window.main.width//2, y=window.main.height//2)
我收到此错误
File "C:\Python33\lib\site-packages\pyglet\sprite.py", line 225, in __init__
self._texture = img.get_texture()
AttributeError: 'pause_menu' object has no attribute 'get_texture' 'get_texture'.
发生了什么事?我使用超级错误吗?
顺便说一句: 该类正在从另一个模块中调用
pause_menu = menu.pause_menu(x=0, y=0, batch=menu_batch, img=None)
答案 0 :(得分:1)
您正在调用父__init__
错误;使用super(menu, self).__init__(*args, **kwargs)
。该方法由super()
绑定。
您也错误地命名menu.__init__
,最后错过了双下划线。
class menu(pyglet.sprite.Sprite):
def __init__(self, *args, **kwargs):
super(menu, self).__init__(*args, **kwargs)
self.labels = {}
class pause_menu(menu):
def __init__(self, *args, **kwargs):
super(pause_menu, self).__init__(*args, **kwargs)
self.labels['resume'] = pyglet.text.Label('Resume Game', font_name='Times New Roman', font_size=36, x=window.main.width//2, y=window.main.height//2)
由于您明确传入了self
,因此使用两个位置参数调用pyglet.sprite.Sprite.__init__()
,这两个参数均引用self
。
因此,第二个self
参数被视为img
argument,pyglet
尝试在其上调用AbstractImage.get_texture()
method。