هل هناك طريقة لمعرفة ما اذا كان المعلمة يحتوي على فئة أو مثيل فئة؟
-
08-07-2019 - |
سؤال
وأريد my_function المجمع لتكون قادرة على تلقي إما مثيل فئة أو فئة، بدلا من كتابة وظيفتين مختلفتين:
>>> from module import MyClass
>>> my_function(MyClass)
True
>>> cls_inst = MyClass()
>>> my_function(cls_inst)
True
والمشكلة هي أنني لا أعرف مقدما أي نوع من الطبقات أو حالات الدرجة وانا ذاهب الى الحصول عليها. لذلك أنا لا يمكن، على سبيل المثال، استخدام وظائف مثل isinstance ...
وكيف يمكنني معرفة ما إذا كان اكتب المعلمة يحتوي على فئة أو مثيل فئة، بطريقة عامة؟
وأي فكرة؟
المحلول
>>> 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."
استخدم نوع () buitlin وظيفة.
ومنها مثلا:
import avahi
print type(avahi)
<type 'module'>
لا تنتمي إلى StackOverflow