No to je proste, mily Watsone. Vyplyva to podle me z dynamicke povahy jazyka Python. V dobe, kdy vytvaris instanci tridy B, neexistuje nikde zadne jmeno MujModul. To, ze si nejaky blok kodu nazves pro sebe jako modul, jeste neznamena, ze to skutecne modul je a ze se tak chova. Tvuj "import" si na import jenom tak hraje. Doporucuju se vratit k imp.LoadModule() a hledat jinou cestu ke kyzenemu vysledku (nemel by podle me byt ani takovy problem nasimulovat "from x import y").

JP

Vaclav Vais wrote:
Ahoj,

potřebuji zavolat explicitně __init__ od předka při dědění. Jako
podrobný popis uvádím příklad, který mi nefunguje, proč?

Poraďte mi prosím.

# zdroj1 a zdroj2 jsou z databaze

zdroj1="""
class Modul:
  def __init__(self):
    self.instance=self

  def getInstance(self):
    return self.instance
"""

zdroj2="""
MujModul=get(zdroj1)
class B(MujModul):
  def __init__(self):
    print dir(self) # Dukaz, ze jsem zdedil, metoda getInstance je
pristupna
    MujModul.__init__(self)  # Jak explicitne volat predka ?
"""

def get(kod):
  comp=compile(kod,'Modul_x','exec')
  exec comp
return eval(dir()[0]) definiceB=get(zdroj2)

b=definiceB()

_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python



_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem