Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
class abc(object):
def __init__(self, io):
self.my_tuple = io
for x in self.my_tuple:
...
def sample(self):
if blabla:
return self.my_tuple[sample]
Hallo,
ich möchte das zur Laufzeit in der Schleife für jedes x die methode sample zur instanz der klasse abc hinzugefügt wird und zwar dynamisch, sodass in der sample-methode alle sample durch das aktuelle x ersetzt werden(also sowohl der methodenname als auch der key für das dict.
ich komm aber da nicht so ganz klar.
also methode setzt man über .setattr, aber wie macht man die function dynamisch?
vielen dank nvidia
Das hört sich erstmal nicht nach einder sonderlich geschickten Idee an, auch wenn die Umsetzung möglich ist. Welches Problem willst du denn eigentlich lösen, vielleicht lässt sich eine bessere Lösung finden.
ich will eine klasse erstellen die ihre attribute so zurückgibt:
abc.attribut()
Leider werden die attribute dynamisch geladen und die menge variert von instanz zu instanz
@nvidia: Wie willst du denn die attribute/Methoden in deinem Code aufrufen, wenn du deren Namen erst zur Laufzeit (lies: nach dem Programmieren) kennst?
der code wird allgemein geschrieben. der benutzer muss selbst entscheiden, welche für ihn interessant sind. Wenn später neue Attribute hinzukommen, dann muss nichts geändert werden, weil der Benutzer seine neuen Attribute sofort abrufen kann.
class MyClass(object):
def __init__(self, stuff):
for key, value in stuff.items():
def sample(value=value):
print value
setattr(self, 'sample_' + key, sample)
mc = MyClass({'a':1, 'b':2})
mc.sample_a()
mc.sample_b()
ok danke, das ist es.
Kann man auch in der klasse definieren, dass wenn die function nicht existiert automatisch None zurück gegeben wird?
mt get_attr kann man das individuell machen, aber kann man das auch irgentwie allgemein einstellen?