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)
Partager