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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| class PassePartout:
"""Universal Proxy Object"""
_exemple= None
__class__ = object
def __init__(self, *args, **kw): #s'il passe partout, il doit pouvoir tout gober!
self._nextCount = False
pass
def __getattr__(self,key):
if key== "__str__": return "PassePartout"
if key== "__repr__": return "PassePartout"
return PassePartout() #Dans le fond, c'est plutôt bien pensé
def __setattr__(self,key,value):
pass
def __getitem__(self,key):
return PassePartout() #Pareil que plus haut.
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)
def __len__(self):
return 1
len = __len__
def __next__(self):
raise StopIteration
next = __next__
def __iter__(self):
return iter((self,))
def __instancecheck__(self, instance):
print "check instance" #je parviens pas à le faire rouler (py2.7)
return True
def __subclasscheck__(self, subclass):
print "check class" #Lui non plus
return True |
Partager