2017-08-16 47 views
0

說我在Python中使用OpenGL。Python傳遞對象函數和引用函數變量

很多時候您撥打一個電話,如

glutDisplayFunc(display) 

這裏顯示的是你寫的函數。

如果我有一個類

class foo: 
    #self.x=5 
    def display(self, maybe some other variables): 
     #run some code 
     print("Hooray!, X is:", self.x) 

,我想傳遞一個顯示功能,並將它打印出「萬歲!X是:5」

會我把它作爲

h = foo() 
glutDisplayFunc(h.display) 

可以工作嗎?

+0

所以,那麼就試試吧。 – rocksteady

+0

但是,您應該添加'__init__'函數,以便使'self.x'知道。 – rocksteady

+0

通常類名在CamelCase中,函數名在snake_case中。 –

回答

0

是的,你可以調用這樣的功能:

h = foo() 
glutDisplayFunc(h.display) 
0

如果這是你的類:

class Foo(): 
    def __init__(self): 
    self.x = 5 
    def display(self): 
    print("hooray {}".format(self.x)) 

這您glut_display_func()

def glut_display_func(func): 
    func() 

你可以這樣做:

foo = Foo() 
foo.display() 

glut_display_func(foo.display) 

,並得到相同的結果:

hooray 5 
hooray 5