在pygame循环中考虑这一行:
pygame.display.set_mode().fill((0, 200, 255))
来自:http://openbookproject.net/thinkcs/python/english3e/pygame.html
予。即使是在set_mode中嵌套的填充函数,你怎么知道?我在pygame文档中搜索过,没有关于set_mode部分填充的信息。
II。 set_mode()
是pygame包的显示模块的功能。如何调用嵌套在另一个函数中的函数?
我怎么能用这个函数调用print"hi"
(试过但得到一个AttributeError):
def f():
def g():
print "hi"
答案 0 :(得分:4)
pygame.display.set_mode()返回一个Surface对象。
pygame.display.set_mode初始化窗口或屏幕以供显示 pygame.display.set_mode(resolution =(0,0),flags = 0,depth = 0):return Surface
所以你在表面对象上调用方法.fill()
,而不是在函数set_mode()
上调用。
您可以在pygame的surface documentation中找到表面对象上可用的方法。
您不能以这种方式调用嵌套函数。 要在打印示例中获得所需结果,可以按以下方式使用类:
class F():
def g(self):
print "hi"
导致:
>>> F().g()
hi
这是一个简化示例,用于说明display.set_mode().fill()
的工作原理:
class Surface():
def fill(self):
print "filling"
class Display():
def set_mode(self):
return Surface()
Display().set_mode().fill()
编辑:
您可以使用嵌套函数,但它与使用对象和模块的方式略有不同:
def f():
def g():
print "hi"
return g
导致:
>>> outerf = f()
>>> outerf()
hi