Per determinare la classe, posso farlo:Come determinare il tipo di istanza di classe
class A: pass
a = A
type(A) is type #True
o:
import inspect
inspect.isclass(A)
Ma come determinare il tipo di istanza di classe, non conoscendo il nome della classe?
Qualcosa di simile a questo:
isinstance(a, a.__class__.__name__)
#TypeError: isinstance() arg 2 must be a type or tuple of types
ho trovato una soluzione, ma non funziona con Python 3x
import types
class A: pass
a = A()
print(type(a) == types.InstanceType)
#AttributeError: 'module' object has no attribute 'InstanceType'
Soluzione:
if '__dict__' in dir(a) and type(a) is not type:
Stai chiedendo come determinare se un oggetto è una classe o un'istanza di una classe? – grifaton
InstanceType è classi vecchio stile, che non esistono in 3.x. –
@grifaton, voglio distinguere la classe dall'istanza – Opsa