2017-06-15 46 views
-3

我怎样才能得到一个变量从这样的如何从另一个类蟒蛇得到变量

white=(255,255,255) 
class window: 
    def open(a,b,c): 
     displaysurf=pygame.display.set_mode(a) 
     pygame.display.set_caption(b) 
     displaysurf.fill(c) 
    def close(): 
     while True: 
      for event in pygame.event.get(): 
       if event.type==QUIT: 
        pygame.quit() 
        sys.exit() 
      pygame.display.update() 
class img(): 
    def show(image,position): 
     pygame.image.load(image) 
     displaysurf.blit(image,position) 

我想从window.open()功能

+0

你不能。 'displayurf'只存在于函数的作用域中。 –

+0

没办法调用它 –

+0

然后['return'](https://docs.python.org/3/reference/simple_stmts.html#grammar-token-return_stmt)从你的'open()'方法。 – zwer

回答

0

这是不可能的访问获得displaysurf变量其他类变量在函数中分配了,除非您使用return。但是,如果在类实例中变量为分配为,那么您可以通过某些限制访问它。

window类将因此采取的

class window(object): 
    # initialize class variable 
    def __init__(self, a, b, c): 
     self.display_surf = pygame.display.set_mode(a) 
     pygame.display.set_caption(b) 
     self.display_surf.fill(c) 

    def close(self): 
     while True: 
      for event in pygame.event.get(): 
       if event.type==QUIT: 
        pygame.quit() 
        sys.exit() 
      pygame.display.update() 

open()功能被嵌入在__init__()函数的形式,因为display_surf变量只与参数a并在该点它将使意义设置分配其他属性也是如此。

现在要访问该变量,首先必须初始化该类。在创建img课程或之后,您可以这样做。为了获得更大的灵活性,最好这样做。因此img类将需要一个额外的参数来访问该变量。

class img(object): 
    def show(win, img, pos): 
     pygame.image.load(img) 
     win.display_surf.blit(img, pos) 

# set up and access 
win = window(# a, b, c) 
img.show(win, # img, pos) 

我之所以说限制是因为window类必须首先使用变量,并希望使用它必须有它的参数之一任何函数之前进行初始化。

如果您不希望将其作为函数的参数包括在内,您可以使win变量为全局变量。但是,建议不要这样做,因为这个变量可能会在目标课程之外被篡改,并且会弄乱整个程序。