ich möchte in meiner Klasse die Property Objekte zur Laufzeit generieren. Hier der aktuelle Code, der eine übergebenes SQLObjekt durchläuft und aus seinen properties die meiner Klasse macht. Diese will ich dann teilweise in meiner Klasse überschreiben um bei den Settern einige Überprüfungen durchzuführen, bevor der Wert in die Datenbank kommt. Die anderen sollen durch die lambda Funktion gesperrt werden.
Code: Alles auswählen
def GetSetterName(name):
return "_set_%s" % name
def GetGetterName(name):
return "_get_%s" % name
def GetPropertyName(name):
return name
class MyObjekt(object):
_obj = None #speichert das Resultat von get
_table = None
_name = None
def __init__(self,table,name):
self._table = table
self._name = name
#sqlobject durchlaufen
for name,item in table.__dict__.iteritems():
#fuer jedes property im sqlobject
#ein eigenes in dieser klasse schalten
if isinstance(item,property):
getter = lambda self,value: eval("self._obj.%s" % name)
setter = lambda self,value: False #Standard soll sein, den Setter fuer das SQLOBjekt zu verbieten, wo es erlaubt ist soll das property ueberschrieben werden
setattr(self, GetSetterName(name), setter)
setattr(self, GetGetterName(name), getter)
setattr(self, GetPropertyName(name), property(setter,getter))
class User(MyObject):
def __init__(self):
super(User, self).__init__(UserTable,"User")
Code: Alles auswählen
>>>a = User()
>>>a.get(1) #holt sich aus der Tabelle die spalte mit der ID 1, ist nicht im Code oben drin
>>>a.name
<property object at 0x833ad4c>
Danke für jede Hilfe!