2017-08-16 66 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