[python] class a subclass

Roman Miklos RMiklos na pss.sk
Sobota Listopad 11 10:19:15 CET 2006


>ostatni metody rodice se musi znova duplicitne zavadet a volat a je jich
>opravdu dost.
Tak tomu fakt nerozumim. Ak ma metoda potomka robit presne to co metoda 
rodice, tak ju nemusis znova explicitne prekryvat, pretoze potomok zdedi 
metody od rodice.
 
Priklad:
-----------
class SCORINGstatistics:
  '''
    Class for monitoring current state of SCORING
  ''' 
....

  def get_results(self):
    ''' get the results '''
    self.get_current_date()
    self.select_data()
 
    result_form = \
    u"----------------------------------------------\n" +\
    u"Momentálny stav k %s\n" +\
    u"----------------------------------------------\n" +\
    u"Štatistika za obdobie %s - %s\n" +\
    u"----------------------------------------------\n" +\
    u"  Celkový počet dopytov do SCORINGu     = %s\n" +\
    u"  z toho :\n" +\
    u"    počet dobre spracovaných dopytov    = %s\n" +\
    u"    počet chybne spracovaných dopytov   = %s\n" +\
    u"    počet nespracovaných dopytov        = %s\n"
    result = result_form \
      % (self.datetime,
         self.from_date_std,
         self.to_date_std,
         self.zaslane,
         self.sprac_ok,
         self.sprac_err,
         self.nesprac)
    return(result)

...

class SCORINGstatisticsW(SCORINGstatistics):
  '''
    Windows GUI for SCORINGstatistics
  ''' 
...

  def ergebnisse(self):
    ''' get the result from AS/400 database''' 
    if self.connected:
      results = self.get_results()
      if self.statistics == 1:
        # full statistics
        if self.sprac_ok > 0:
          results += u"\n  ďalej zo správne spracovaných dopytov :\n\n"+\
                     self.get_detailed_results()+\
                     '\n'
      self.textfenster.insert(END, '\n'+results)
      self.textfenster.see(END)
    else:
       tkMessageBox.showinfo("!!!CHYBA!!!",u"Neexistuje spojenie so 
serverom!")

 
Class SCORINGstatistics realizuje vsetky metody na SQL-vybery a 
vyhodnotenie, mimo ineho definuje metodu get_result(), kde sa vyjkonaju 
nejake selekty vytvori sa vysledny vypis vo forme textoveho pola a to sa 
vrati ako navratova hodnota.

Trieda potomka SCORINGstatisticsW je len GUI nadstavba . Vobec nema 
definovanu metodu get_result() to znamena ani ju neprekryva. Len si ju 
zavola vo svojej vlastnej metode ergebnisse() a vysledok vypise do 
textoveho okna.

Objekt potomok dedi metody od rodica, ak nenajde danu metodu vo svojom 
mennom priestore ide pozried o hladinu nizsie do rodica, ak ju ani tam 
nenajde ide zase nizsie do rodica svojho rodica atd....

Takze ja vobec nechapem, naco chces vsetky metody z rodica v potomkovi 
prekryvat.
 



mtip <mtip na atlas.cz> 
Sent by: python-bounces na py.cz
11.11.2006 08:21
Please respond to
Konference PyCZ <python na py.cz>


To
Konference PyCZ <python na py.cz>
cc

Subject
Re: [python] class a subclass






To sice ano, ale pak je to mnohem komlikovanejsi, protoze ostatni
metody rodice se musi znova duplicitne zavadet a volat a je jich
opravdu dost.


-- 
Mirek Nemecek

---------------------------------------------------------------------------
PK> mtip napsal(a):
>> 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:
>> ...
>> 
>> class sql(table):
>>    ...
>> 

PK> Možná jsem mimo, ale mohl bys to řešit dvěmi samostatnými 
PK> třídami/instancemi, kdy jedna bude druhou pouze volat, vyžívat, a ne 
dědit?


_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
, P. O. Box 48 
 
Tel.: 
Fax: 



Další informace o konferenci Python