python - 占位符类方法 Python 3

标签 python oop class python-3.x pygame

我希望有一个类,其中的方法可以在其他方法中调用,但我希望这些方法可重写并默认传递。有没有办法(很好地)做到这一点?

编辑:我特别感兴趣的是我将如何覆盖这些方法。我尝试过 def setup(self): ... 、game.setup = setup 。这有点工作,但它不能与“self”参数正常工作,抛出 setup() 缺少 1 个必需的位置参数:'self'

编辑2:我意识到我应该子类化Game并覆盖子类中的方法。我不知道为什么花了这么长时间。

如果我的话很愚蠢和令人困惑,这里有一些代码:

class Game(threading.Thread):
    def update(self):
        pygame.display.update()
        self.screen.fill(self.fillcolour)

    def setup(self):
        """Placeholder for setup"""
        pass

    def frame(self):
        """Placeholder for frame"""
        pass

    def handleInputs(self):
        """Placeholder for input handling"""

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.quit()

    def run(self):
        self.setup()

        while True:
            if self.FRAMERATE:
                self.clock.tick(self.FRAMERATE)

            self.frame()
            self.update()
            self.handleInputs()

最佳答案

这称为 Template Method Pattern你的代码没问题。

您可能希望为每个事件调用一个可重写的方法,而不是重写整个 handleInputs (否则您必须每次都重新实现循环)。

class Game(threading.Thread):
    def update(self):
        pygame.display.update()
        self.screen.fill(self.fillcolour)

    def setup(self):
        """Placeholder for setup"""
        pass

    def frame(self):
        """Placeholder for frame"""
        pass

    def handleEvent(self, event):
        """Placeholder for input handling"""
        pass

    def handleInputs(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.quit()
            self.handleEvent(event)

    def run(self):
        self.setup()

        while True:
            if self.FRAMERATE:
                self.clock.tick(self.FRAMERATE)

            self.frame()
            self.update()
            self.handleInputs()

关于python - 占位符类方法 Python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15313665/

相关文章:

php - 自动加载数据库类

python - 如何在python中使用只有一个类的实例

c# - 类预设(如 Color.Red)

python - 滚动平均 pandas DataFrame 的所有值

php - 从连接到 MySQL 的 php 调用 python 脚本

php - 在 PHP 中指定类的对象类型的方法

c++ - 在基类中使用 "new this.GetType()"实例化派生类

python - 通过单行字典用决策树模型进行预测

python - np.where : "SyntaxError: keyword can' t be an expression"

c# - 如何在派生类中调用基类构造函数?