2

pygameループの次の行を検討してください。

pygame.display.set_mode().fill((0, 200, 255))

差出人:http ://openbookproject.net/thinkcs/python/english3e/pygame.html

I. set_modeにネストされた塗りつぶし関数があることをどのように知る必要がありますか?pygameのドキュメントを検索しましたが、set_modeセクションへの入力に関する情報がありません。

II。set_mode()pygameパッケージのディスプレイモジュールの機能です。別の関数にネストされた関数を呼び出すにはどうすればよいですか?この関数でどのように呼び出すことができますかprint"hi"(試してみましたが、AttributeErrorが発生します):

def f():
    def g():
        print "hi"
4

1 に答える 1

5

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の表面ドキュメントにあります。

そのようにネストされた関数を呼び出すことはできません。印刷例で目的の結果を得るには、次の方法でクラスを使用できます。

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 
于 2012-04-09T14:52:05.297 に答える