【问题标题】:Derived Class missing argument: 'self'派生类缺少参数:'self'
【发布时间】:2017-10-03 08:12:52
【问题描述】:

我需要将派生类合并到我的游戏中,但是当我去更新类时它说

TypeError: update() 缺少 1 个必需的位置参数:'self'

试图改变这个(有效)

class Rain(pygame.sprite.Sprite):
    def __init__(self,x,image):
        pygame.sprite.Sprite.__init__(self)
        self.image = image
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = 0
    def update(self):
        self.rect.bottom += 5

class BadRain(pygame.sprite.Sprite):
    def __init__(self,x,image):
        pygame.sprite.Sprite.__init__(self)
        self.image = image
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = 0
    def update(self):
        self.rect.bottom += 5

这不起作用

class Rain():
    def __init__(self,x,image):
        self.image = image
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = 0

class Bad(pygame.sprite.Sprite):
    def __init__(self,x,image):
        Rain.__init__(self,x,image)
        pygame.sprite.Sprite.__init__(self)
        self.rect = self.image.get_rect()
    def update(self):
        self.rect.bottom += 5

class Good(pygame.sprite.Sprite):
    def __init__(self,x,image):
        Rain.__init__(self,x,image)
        pygame.sprite.Sprite.__init__(self)
        self.rect = self.image.get_rect()
    def update(self):
        self.rect.bottom += 5

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    我解决了这个问题

    class Rain(pygame.sprite.Sprite):
        def __init__(self,x,image):
            self.image = image
            self.rect = self.image.get_rect()
            self.rect = self.image.get_rect()
            self.rect.x = x
            self.rect.y = 0
    
    class Bad(Rain):
        def __init__(self,x,image):
            Rain.__init__(self,x,image)
            pygame.sprite.Sprite.__init__(self)
            self.rect = self.image.get_rect()
        def update(self):
            self.rect.bottom += 5
    
    class Good(Rain):
        def __init__(self,x,image):
            Rain.__init__(self,x,image)
            pygame.sprite.Sprite.__init__(self)
        def update(self):
            self.rect.bottom += 5
    

    【讨论】:

    • 为什么Rain 不调用Sprite.__init__ 而不是它的所有子类都这样做?
    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多