Ich würde entweder mittels
Code: Alles auswählen
hasattr(x, "__call__")
Code: Alles auswählen
isinstance(x, collections.Callable)
Sebastian
Code: Alles auswählen
hasattr(x, "__call__")
Code: Alles auswählen
isinstance(x, collections.Callable)
Code: Alles auswählen
func = getattr(instance.function, k)
if callable(func):
# do something
Code: Alles auswählen
hasattr(instance.function, "__call__")
Code: Alles auswählen
hasattr(instance.function, "__call__")
Code: Alles auswählen
callable(instance.function)
Den gibt es, man muss halt nur mal genau hinschauenkhz hat geschrieben:(Anm: Damn, kann man eigentlich im Forum statt dem Code button nicht einen python button einfuegen ... )
ABC = Abstract Base Class, ist eigentlich eine übliche Abkürzungkhz hat geschrieben:Aber da muss ich erst wieder Doku lesen ... ich sage nur ABC (wer das Akronym kennt hat auch schon gelesen
Code: Alles auswählen
def wrap_class(self, cls):
#print self.__dict__
#print dir(self.__class__.__dict__)
print cls.__dict__.items()
for k, v in cls.__dict__.items():
print "key, value:", k,v
if not k.startswith("__"):
func = getattr(cls, k)
print "callable",callable(func)
if callable(func):
print "wrap", k
setattr(cls, k, mkwrapper(v))
Code: Alles auswählen
In [70]: inspect.getmembers(B, inspect.ismethod)
Out[70]: [('a', <unbound method B.a>), ('b', <unbound method B.b>)]
Code: Alles auswählen
import Protector
class A(object):
def __init__(self):
self.a = None
self.b = None
# soll dann bedeuten
# schuetze (wraped) die Methode b_method und prüfe auf admin
# wenn ok wird b_method ausgeführt, sonst eine Exeption geschmissen.
Protector.lock ( { "b_method" : "admin" } )
def a_method(self):
#irgendwas
pass
def b_method(self):
#irgendwas anderes
pass
Hihi, lustichIch kann deine Argumente zur Nachvollziehbarkeit ueberhaupt nicht nachvollziehen...
als das ich jemandem sage:Macht vorm Rausgehen alle Fenster zu
Andererseits muss man zum prüfen ob ein Fenster echt zu ist, natürlich DAS Fenster ansehen ...Also bevor ihr rausgeht, mach bitte das Fenster zu ... und das .... und das (und gehe durchs ganze Haus..)
Code: Alles auswählen
protect_all( { "method1" : "parameter", "method2" : "parameter"}...)
protect_all_except( ["method1", "method2", ...])
protect_only( { "method1" : "parameter", "method2" : "parameter"}...)
Code: Alles auswählen
class A(B,C,D):
Code: Alles auswählen
@protect
def list( self, powdict ):
""" Standard PoW action to return all records of the related model """
res = self.model.find_all()
return self.render(model=self.model, powdict=powdict, list=res)
Code: Alles auswählen
@protect(user, role)
def list( self, powdict ):
""" Standard PoW action to return all records of the related model """
res = self.model.find_all()
return self.render(model=self.model, powdict=powdict, list=res)
Code: Alles auswählen
@meine_funktion_die_andere_dekoriert
def a_standalone_func():
pass
Code: Alles auswählen
a_stand_alone_function = meine_funktion_die_andere_dekoriert(a_stand_alone_function)
Code: Alles auswählen
setattr (obj, meth, decorator(method))