Si vous voulez vérifier qu'un objet d'une classe définie par l'utilisateur n'est pas une instance d'un type concret intégré, vous pouvez vérifier s'il possède la propriété suivante __dict__
attribut.
>>> class A:
... pass
...
>>> obj = A()
>>> hasattr(obj, '__dict__')
True
>>> hasattr((1,2), '__dict__')
False
>>> hasattr(['a', 'b', 1], '__dict__')
False
>>> hasattr({'a':1, 'b':2}, '__dict__')
False
>>> hasattr({'a', 'b'}, '__dict__')
False
>>> hasattr(2, '__dict__')
False
>>> hasattr('hello', '__dict__')
False
>>> hasattr(2.5, '__dict__')
False
>>>
Si vous souhaitez vérifier si une instance est un objet de n'importe quelle classe, qu'elle soit définie par l'utilisateur ou concrète, vous pouvez simplement vérifier si elle est une instance de object
qui est la classe de base ultime en python.
class A:
pass
a = A()
isinstance(a, object)
True
isinstance(4, object)
True
isinstance("hello", object)
True
isinstance((1,), object)
True