134 votes

Python vérifie les instances des classes

Existe-t-il un moyen de vérifier si un objet est une instance d'une classe ? Pas une instance d'une classe concrète, mais une instance de n'importe quelle classe.

Je peux vérifier qu'un objet n'est pas une classe, pas un module, pas un traceback, etc.

5voto

user2682863 Points 1639
class test(object): pass
type(test)

renvoie à

<type 'type'>

instance = test()
type(instance)

renvoie à

<class '__main__.test'>

C'est donc une façon de les différencier.

def is_instance(obj):
    import inspect, types
    if not hasattr(obj, '__dict__'):
        return False
    if inspect.isroutine(obj): 
        return False
    if type(obj) == types.TypeType: # alternatively inspect.isclass(obj)
        # class type
        return False
    else:
        return True

3voto

Farsheed Points 397

Ou

import inspect
inspect.isclass(myclass)

2voto

Ned Batchelder Points 128913

C'est un peu difficile de dire ce que vous voulez, mais peut-être inspect.isclass(val) est ce que vous recherchez ?

2voto

f.rodrigues Points 3375

Voici une astuce crasseuse.

if str(type(this_object)) == "<type 'instance'>":
    print "yes it is"
else:
    print "no it isn't"

2voto

seaky Points 21

Oui. En conséquence, vous pouvez utiliser hasattr(obj, '__dict__') o obj is not callable(obj) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X