我是Python的新手,我仍然对类继承的语义有疑问。

以下是我要导入的模块games.py模块中的相关类:

class Text(Sprite):
    """
    Alphanumeric values displayed on the screen.
    """
    def __init__(self, value, size, color, angle=0,
                 x=0, y=0,
                 top=None, bottom=None, left=None, right=None,
                 dx=0, dy=0,
                 interval=1, is_collideable=True):
        self._size = size
        self._color = color
        self._value = value
        self._font = pygame.font.Font(None, self._size)
        Sprite.__init__(self, self._create_surface(), angle,
                        x, y,
                        top, bottom, left, right,
                        dx, dy,
                        interval, is_collideable)


以下是我尝试在自己的程序中调用它的位置:

self.scorebox = games.Text (value = self.scorevar,
                            pygame.font.Font(ardarlingopentype, 50),
                            color = color.white,
                            x = 550,
                            y = 50)


如您所见,语法是错误的,但是如何解决这个问题,以便可以从自己的程序继承Text类,并使FONT成为可以更改的可访问参数?

谢谢。

最佳答案

不确定(请注意,您不能在命名和/或混合后使用未命名的参数-在“值”之后未使用未命名的参数),但是似乎您需要按以下方式修改代码:

class Text(Sprite):
    """
    Alphanumeric values displayed on the screen.
    """
    def __init__(self, value, size, color, angle=0,
                 x=0, y=0,
                 top=None, bottom=None, left=None, right=None, font=None,
                 dx=0, dy=0,
                 interval=1, is_collideable=True):
        self._size = size
        self._color = color
        self._value = value
        if font:
            self.font_ = font
        else:
            self._font = pygame.font.Font(None, self._size)
        Sprite.__init__(self, self._create_surface(), angle,
                        x, y,
                        top, bottom, left, right,
                        dx, dy,
                        interval, is_collideable)


然后:

import pygame
import games

self.scorebox = games.Text (value = self.scorevar,
                            size = 50,
                            color = color.white,
                            x = 550,
                            y = 50)


要么:

import pygame
import games

self.scorebox = games.Text (value = self.scorevar,
                            size = 50,
                            font = pygame.font.Font(ardarlingopentype, 50),
                            color = color.white,
                            x = 550,
                            y = 50)

关于python - 类继承,使用新参数重新定义__init__,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6652186/

10-12 00:32
查看更多