Portál AbcLinuxu, 9. května 2025 05:46
class Abc: something = [ 'Foo', 'Bar', 'Baz' ] def __init__(self): for s in something: # ??? abc=Abc() abc.doFoo() abc.doBar() abc.doBaz()Potrebuju pro kazdou polozku v 'something' za behu programu vyrobit funkci doXXX(). Nevite, jak na to?
setattr(self, "do" + s, nejakaFunkce)
Ještě bych doplnil malou ukázku s jedním takovým hezkým pythonovým chytákem:
class Abc: something = ['Foo', 'Bar', 'Baz'] def __init__(self): for s in self.something: fun = lambda: s setattr(self, "do" + s, fun) del fun abc=Abc() print abc.doFoo() # vypíše: Baz print abc.doBar() # vypíše: Baz print abc.doBaz() # vypíše: Baz class Abc2: something = ['Foo', 'Bar', 'Baz'] def __init__(self): for s in self.something: setattr(self, "do" + s, self._make_fun(s)) def _make_fun(self, s): return lambda: s abc=Abc2() print abc.doFoo() # vypíše Foo print abc.doBar() # vypíše Bar print abc.doBaz() # vypíše Baz
BTW ten WYSIWYG editor tady je ale stupidní. Musel jsem si to přepnout na Zdroj, abych vůbec něco napsal a nezešílel z toho.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.