[python] class a subclass
mtip
mtip na atlas.cz
Sobota Listopad 11 07:45:23 CET 2006
Diky za odpovedi, opravdu jsem si to OOP spatne vylozil. Dosud jsem
psal v jazyku, kde prekryvani metod nebylo mozne.
Mohli by jste mi tedy na konkretnim prikladu napsat, jak postupovat ?
class table:
'''zpracovava udalosti nad tabulkou
(pohyb po zaznamech, zmeny zaznamu atd)'''
def move(self,recordNum):
'''posun po zaznamech'''
pass
def refresh(self,tbl):
'''obnovi tabulku'''
pass
def create(self,fields,tbl):
this.__fields=fields #ulozi nove nazvy poli
this.refresh() #obnovi tabulku (S POTOMKEM VYTVORI CHYBU)
#nyni se mi zda vse ok a rekneme ze zatim netusim, zda potomek teto tridy bude vubec kdy existovat
#je uz ted chyba volat verejnou metodu refresh() pomoci self.refresh() ???
class sql(table):
'''prebira vse z table a vylepsi metody create a refresh'''
def refresh(self):
'''prekryje metodu rodice
nacte zaznamy napr z MySQL a posle do rodice tb'''
#neco jako opakuj posledni SELECT a ziskej pole tbl
table.refresh(self,tbl)
def create(self,sqlText):
'''prekryje metodu rodice
nacte novou tabulku z sql do pole a preda ho rodici'''
#neco jako
#tbl = run (SELECT...)
#fields = nazvy poli z dotazu select
table.create(self,fields,tbl)
#podle me to vypada logicky a na prvni pohled je vse ok, dokonce je vhodne prekryti obou metod,
# aby nedoslo k chybe pri vymene tabulky v rodici, kdyz o tom potomek nebude vedet
#az na skutecnost, ze:
# metoda sql.create zavola prekrytou table.create -> to je preci bezne
# metoda table.create ulozi fields a zavola self.refresh() OVSEM TEN SKONCI V POTOMKU A DOJDE K CHYBE!!!
#kdyz to tedy shrnu trida table ma predem tusit, ze se na ni nekdo v budoucnu muze prilepit
# a tak ma volat sve verejne metody jako table(self,..) ?
# DALO BY SE TOHLE RICT JAKO ZASADA OOP V PYTHONU ?
#NEBO BY JSTE TOHLE VYRESILI NEPREKRYTIM METODY refresh() ?
#avsak tato metoda rodice pak uz nebude mit vyznam a bude zbytecna a matouci
Diky, uz s tim nebudu dal prudit :-)))
Mirek Nemecek.
----------------------------------------------------------------------------------------------------------
>> Možná je chyba v tom mentálním obraze rodič-potomek.
>> Instance odvozené třídy je instance potomka. Žádná
>> související instance rodičovské třídy neexistuje.
s> Tohle jsem už psal taky, že je na 99% chyba v architektuře.
>> Potomek se chová "úplně jako tata", jenom některé
>> věci dělá trošku jinak. Prober si tohle
s> Jinak ten příklad synek je naprosto a dokonale instruktivní. Nic lepšího
s> jsem neviděl, škoda že jste mě neučil, když jsem s tím začínal. Docela
s> jsem se nasmál. Jasné, jednoduché, skvělé.
s> _______________________________________________
s> Python mailing list
s> Python na py.cz
s> http://www.py.cz/mailman/listinfo/python
Další informace o konferenci Python