[python] class a subclass

Robert Cernansky hslists na zoznam.sk
Sobota Listopad 11 10:13:59 CET 2006


On Sat, 11 Nov 2006 07:45:23 +0100 mtip <mtip na atlas.cz> wrote:

> Mohli by jste mi tedy na konkretnim prikladu napsat, jak postupovat ?
> 
> class table:
[...]

Myslim, ze si treba este trochu ujasnit co si tu chcel vytvorit
(trochu to napasovat do teorie OOP). Podla mna class table je nieco
ako template, cize nejaka predloha ako maju vyzerat buduce zdedene
classy. Pricom ponuka aj urcitu vseobecnu funkcionalitu. Odvodene
classy uz pracuju s konkretnymi SQL vecami.

Toto treba zohladnit aj v tej template. Cize nesmu sa mixovat
vseobecne veci s konkretnymi SQL do jednej metody. Ked si teda
povieme, ze table je template nesmieme urobit taku vec, ze create()
bude v template pracovat s fields a tbl a odvodena bude pracovat
s sqlText.

> #kdyz to tedy shrnu trida table ma predem tusit, ze se na ni nekdo
> #v budoucnu muze prilepit

V podstate ano. Tym, ze sme povedali, ze table je template,
predpokladame, ze bude od nej dedit.

Cize by to mohlo vyzerat asi takto: (Su tam oddelene metody pracujuce
konkretne s SQL a vseobecne metody. Kedze table je template, tak do
nej zapiseme aj tie konkretne metody, ale budu prazdne, resp. moze byt
v nich to, co pozadujeme aby bolo aj v buducich prekrytych metodach.)


class table:
    "Zpracovava udalosti nad tabulkou."

    def refresh(self, tbl):
        # nejake vseobecne operacie
        self.sqlRefresh()

    def sqlRefresh(self):
        "Obnovi tabulku. Prekryt!"
        pass

    def create(self, sqlText):
        tbl, fields = self.sqlCreate(sqlText)
        self.__fields = fields
        self.refresh()

    def sqlCreate(self, sqlText):
        "Vrati tbl a fields. Prekryt!"
        return tbl, fields # toto tu ani nemusi byt ale
                           # programatorovi to hovori, co ma buduca
                           # prekryta metoda vracat

class sql(table):
    "Zpracovava udalosti nad MySQL tabulkou."

    def sqlRefresh(self):
        "Obnovi tabulku."
        #neco jako opakuj posledni SELECT a ziskej pole tbl

    def sqlCreate(self, sqlText):
        "Vrati tbl a fields."
        #neco jako
        #tbl = run (SELECT...)
        #fields = nazvy poli z dotazu select
        return tbl, fields


Snad to bude fungovat ;-)

Robo


-- 
Robert Cernansky
E-mail: hslists na zoznam.sk
Jabber: HS na jabber.sk



Další informace o konferenci Python