簡體   English   中英

Pyglet子類對象沒有屬性

[英]Pyglet Subclass object has no attribute

我正在用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)

您調用父級__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__()使用兩個位置參數調用pyglet.sprite.Sprite.__init__() ,這兩個位置參數均引用self

結果,第二個self參數被視為img參數,pyglet嘗試對其調用AbstractImage.get_texture()方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM