パラメータにクラスまたはクラスインスタンスが含まれているかどうかを確認する方法はありますか?
-
08-07-2019 - |
質問
2つの異なる関数を記述する代わりに、ラッパーmy_functionがクラスまたはクラスインスタンスのいずれかを受信できるようにします。
>>> from module import MyClass
>>> my_function(MyClass)
True
>>> cls_inst = MyClass()
>>> my_function(cls_inst)
True
問題は、どのタイプのクラスまたはクラスインスタンスを受け取るか事前にわからないことです。たとえば、isinstanceなどの関数を使用することはできません...
一般的な方法で、paramにクラスまたはクラスインスタンスが含まれているかどうかを確認するにはどうすればよいですか?
アイデアはありますか
解決
>>> class A: pass
>>> isinstance(A, type)
True
>>> isinstance(A(), type)
False
他のヒント
import types
def myfun(maybe_class):
if type(maybe_class) == types.ClassType:
print "It's a class."
else:
print "It's an instance."
type()buitlin関数を使用します。
例:
import avahi
print type(avahi)
<type 'module'>
所属していません StackOverflow