いかどうかをチェックpythonの方法は行きません。
-
09-06-2019 - |
質問
定への参照方法があるのかどうかのチェック方法は、オブジェクトはありませんか?でもアクセスのインスタンスで行きますか?
解決
def isbound(method):
return method.im_self is not None
def instance(bounded_method):
return bounded_method.im_self
時にユーザ定義メソッドオブジェクト 作成により取得するユーザー定義 関数オブジェクトからのアクセス
im_self
属性None
の メソッドオブジェクトと言われるジ.時には取得する ユーザ定義関数オブジェクトから クラスのいずれかを経由してそのインスタンスは、im_self
属性のインスタンスは、 のメソッドオブジェクトと言われた。いずれの場合も、この新しい方法のim_class
属性クラスから の検索から、 そのim_func
属性はオリジナルの 関数オブジェクトです。
Python 2.6 3.0:
インスタンスメソッドオブジェクトには新しい 属性オブジェクトと機能 を構成する方法の代名詞 のための
im_self
は__self__
, は、im_func
します。__func__
.旧 名前はまだ対応してPython 2.6がっ3.0です。
他のヒント
Python3に __self__
属性 のみ セットに行きます。この設定 None
味の機能(税法では、平野の機能をpython3).
のものを使っておけば間違いないようになります:
def is_bound(m):
return hasattr(m, '__self__')
の選択回答が有効なケースがほとんどです。しかし時に照合する方法がデコレータを選択し解答のチェックに失敗します。次のような例を考えてみましょうデコレータ方法
def my_decorator(*decorator_args, **decorator_kwargs):
def decorate(f):
print(hasattr(f, '__self__'))
@wraps(f)
def wrap(*args, **kwargs):
return f(*args, **kwargs)
return wrap
return decorate
class test_class(object):
@my_decorator()
def test_method(self, *some_params):
pass
の print
文をデコレータは印刷 False
.この場合においてその他の方法でチェック機能パラメータを引数名探名 self
.こがも ない guarantied仕事を完璧で最初の引数の法な強制する self
びその他の名前です。
import inspect
def is_bounded(function):
params = inspect.signature(function).parameters
return params.get('self', None) is not None
im_self 属性 (Python2)