Nije taj slucaj sto si naveo, ali evo detalja, mozda ima jednostavnije rjesenje...
Radi se o modulu koji koji je zaduzen za ispisivanje informacija u konzoli (posshow.py), a taj modul je dijeljen izmedju nekoliko klasa. Svaka klasa trazi drugaciji ispis, a funkcije koje vrse ispise nalaze se u istom modulu (posshow.py). Glavna funkcija je show():
Code:
def show(pos, detail=1):
"""
Prints out relevant details.
Here pos is a class (Nom(), Ver() etc.)
"""
cap = captions()
print "\n", getattr(cap, pos.__name__)["title"], "\n", 70*"-"
print getattr(cap, pos.__name__)["pos"], text_format(pos)
if len(pos.translate) and detail==1:
print "Translation(s): ", t
print
# TODO:
#getattr(? "part_%s" % pos.__name__)(pos)
print
if detail > 1:
if pos.nolex:
print "Lexicon not used."
else:
print "Lexicon used."
print "Module version", pos.__version__
U show() pos je klasa, a program koristi __name__ za odredjivanje sta ce i kako da se stampa. Mogao bih to da uradim sa if/elif ali mi je elegantnije da koristim getattr(): u istom modulu (posshow.py) se nalazi i part_Nom, part_Ver itd, pa onda sa "part_%s" % pos.__name__ formatiram poziv funkcije.