在类中使用“self”时是否有NameError?

时间:2012-03-17 02:26:48

标签: python pygame

我有以下Python(3.2)代码:

from pygame import *

class Application:

    def __init__(self):
        self.running = True
        self.display_surface = None
        self.size = self.width, self.height = 640, 480

        self.old_ticks = pygame.time.get_ticks
        self.new_ticks = None

        pygame.init()
            self.display_surface = pygame.display.set_mode(self.size, pygame.HWSURFACE | pygame.DOUBLEBUF)

    def on_event(self, event):
        if event.type == pygame.QUIT:
            self.running = False

    def on_loop(self):
        pass

    def on_render(self):
        pass

    def on_cleanup(self):
        pygame.quit()

    def regulate_time(self):
        self.new_ticks = pygame.time.get_ticks

        while (self.new_ticks < self.old_ticks + 1000):
            pass

        self.old_ticks = self.new_ticks

    def load_images(self):
        pass

    while(self.running == True):
        for event in pygame.event.get():
            self.on_event(event)

        self.regulate_time
        self.on_loop()
        self.on_render()

    self.on_cleanup()

    test = Application

我遇到以下问题:

while(self.running == True):

这会引发错误:NameError: Name "self" is not defined.

我几乎是一个蟒蛇新手,并希望利用这段时间开始学习python和pygame,然后我可以将它用于我的大学项目(一石二鸟)我无法弄清楚为什么这个错误是被扔向我。

1 个答案:

答案 0 :(得分:6)

嗯,while(self.running == True)在任何方法(def)中都不是,因此没有名为self变量范围(NameError所说的)......

...也许有一些缺失的缩进?虽然之前的pass使其看起来比缺少更多:可能def run(self):

请记住,self只是第一个参数的常规(和正确)名称,用于隐式传递“当前实例”的方法。

快乐的编码。