هل هناك طريقة لمعرفة ما اذا كان المعلمة يحتوي على فئة أو مثيل فئة؟

StackOverflow https://stackoverflow.com/questions/1638657

  •  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'>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top