class Method(object):
def __call__(self):
#how could I get the App instance here?
return True
class App(object):
def __init__(self):
self.g = Method()
ご覧のとおり、上記のコードで私の質問を説明できます。
class Method(object):
def __call__(self):
#how could I get the App instance here?
return True
class App(object):
def __init__(self):
self.g = Method()
ご覧のとおり、上記のコードで私の質問を説明できます。
メソッド内の App オブジェクトへのポインターを保存する必要があります。
class Method(object):
def __init__(self, app):
self.app = app
def __call__(self):
self.app.something()
return True
class App(object):
def __init__(self):
self.g = Method(self)
App でポインターを渡さないようにする必要がある場合は、self
代わりにスタックを調べて取得する必要があります。
以下は推奨されておらずMethod
、 のメソッドでオブジェクトApp
をインスタンス化する場合にのみ機能します。
import sys
class Method(object):
def __init__(self):
parent = sys._getframe(1) # Calling context
locals_ = frame.f_locals
assert ('self' in locals_,
'Method objects can only be instanciated inside instance methods')
self.app = locals_['self']