Bonjour,

Voici une petite classe dont le but est d’être utilisée comme proxy de n'importe quoi. Son but est de "passer partout", i.e ne pas lever d'erreur lorsqu'elle est utilisée à la place de l'objet attendu.

Voyez une fonctionnalité que j'aurais oublié, ou une amélioration quelconque ?
Merci d'avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
class PassePartout:
    """Universal Proxy Object"""
    _exemple= None
    def __init__(self): pass
    def __getattr__(self,key):
        if key== "__str__": return "PassePartout"
        if key== "__repr__": return "PassePartout"
        return PassePartout()
    def __setattr__(self,key,value): pass
    def __getitem__(self,key):  return PassePartout()
    def __setitem__(self,key,value):
        pass
    def __str__(self):return "PassePartout"
    def __repr__(self):return "PassePartout"
    def __hash__(self):    
        """same hashcode for every instance"""
        if PassePartout._exemple is None:
            PassePartout._exemple= PassePartout()
        return object.__hash__(PassePartout._exemple)
    def __call__(self,*args,**kwargs): return PassePartout()
    def __nonzero__(self,*args,**kwargs): return True
    def __coerce__(self,other):
        this= None
        if other.__class__== float(1.0).__class__: this= 0.0
        if other.__class__== int(1).__class__: this= 0
        return (this,other)