Portál AbcLinuxu, 1. prosince 2025 23:17
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.