5

Python 3.x インタープリターを提供するアプリケーション内で使用可能なモジュールから API を使用して UI に要素を追加するときに、Python 3 API がどのように設計されているかについて詳しく調べようとしています。関数/スクリプトを使用できます:「コールバックを登録する」とは、Cpython の観点から何を意味しますか?

4

2 に答える 2

7

通常、これは関数を作成することを意味します。

def foo(some,arguments):
    pass #do something here

次に、その関数を提供された API のクラスに渡します。

API_class_instance.register_callback(foo)

これで、文書化された状況でAPI_class_instancewill が呼び出されます。foo

于 2013-04-10T18:10:02.443 に答える
6

コールバック:

コンピューター プログラミングでは、コールバックは、他のコードに引数として渡される実行可能なコードの一部であり、都合のよいときに引数をコールバック (実行) することが期待されます。呼び出しは、同期コールバックのように即時に行われる場合もあれば、非同期コールバックのように後で行われる場合もあります。

そのため、UI API へのコールバックを登録している場合、何らかの条件が発生したときに関数を呼び出す責任を負う別の関数に、作成した関数を渡す可能性があります。

たとえば、UI にボタンがあり、そのボタンがクリックされたときに何らかのコードを実行したい場合があります。次のようなコールバックを登録できます。

def onclick():
    print 'Button clicked!'

# call the onclick() method when the 'click' event happens on the button
some_api.register_callback(button, 'click', onclick)

API コードは次のようになります。

# global variable containing callbacks
callbacks = {}

# API for registering callbacks
def register_callback(obj, event, callback):
    if obj not in callbacks:
        callbacks[obj] = {}
    callbacks[obj][event] = callback

# a function that is called when some event is triggered on an object
def process_event(obj, event):
    if obj in callbacks and event in callbacks[obj]:
        # this object/event pair has a callback, call it
        callback = callbacks[obj][event]
        callback()
于 2013-04-10T18:15:20.383 に答える