[python] Lze explicitně volat předka?

Jaroslav Pachola j_p na centrum.cz
Středa Únor 8 00:25:23 CET 2006


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
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>   




Další informace o konferenci Python