[python] class a subclass

Roman Miklos RMiklos na pss.sk
Pátek Listopad 10 16:11:32 CET 2006


A nemozes postavit metodu u rodica tak, ze ju celu zavolas v metode 
potomka a nieco k nej este pre ptomka dodas, 
ako to mam v tom priklade dole?

>Potreboval bych neco jako super u Javy.
No v tom sa zial nevyznam....




mtip <mtip na atlas.cz> 
Sent by: python-bounces na py.cz
10.11.2006 16:05
Please respond to
Konference PyCZ <python na py.cz>


To
Konference PyCZ <python na py.cz>
cc

Subject
Re: [python] class a subclass






Bohuzel zmenu nazvu metody v potomku chci nechat jako nouzove reseni.
Potrebuju prekryt obe metody, protoze po aplikaci potomka nemaji
smysl a dokonce jejich pouzitim by doslo k chybe, proto prekryti je
idealni zpusob, jak se jich zbavit. Potreboval bych neco jako super u
Javy.

Mirek.


RM> Realny priklad:

RM> class MyGrep1:
RM>   """
RM>    obsahuje metody na vyhladavanie retazcov v suboroch 
RM>   """
RM> ...

RM>   def usage(self):
RM>       """ Benutzungshilfe druecken """ 
RM>       usage =\
RM>       '\n %s Ver. %s, [rm] %s (rmiklos na pss.sk)\n'\
RM>       % (self.short_progname,self.version,self.creationdate) \
RM>       + ' Searching for a list of strings in a list of a files\n\n'\
RM>       + ' [python] %s options \n\n'\
RM>       % self.progname \
RM>       + '   MANDATORY OPTIONS: \n'\
RM>       + '    -f <file>   | --file <file>\n'\
RM>       + '       required argument:\n'\
RM>       + '       <file> - file name or list of file names delimited by 
"
RM> ",\n'\
RM>       + '                which can contain wildcard characters * and 
?\n'\
RM>       + '    -s <string> | --string <string>\n'\
RM>       + '       required argument:\n'\
RM>       + '       <string> - string or list of strings delimited by " 
"\n'\
RM>       + '   OPTIONS:\n'\
RM>       + '    -h | --help     print this help message\n'\
RM>       + '    -d | --dbginfo  print some debug informations'
RM>       print usage

RM> ...

RM> Metoda usage je vlastne command-line helpovnik ked zadas mygrep -h, 
alebo
RM> mygrep --help

RM> Teraz rozsirim funkcionalitu povodneho programu o nejaky novy command 
line
RM> option (-c resp --nocase) a preto musim zmenit aj helpovnik, takze
RM> vytvorim novy Class

RM> class MyGrep2(MyGrep1):
RM>   """
RM>     rozsirenie triedy MyGrep1 o cmdline-option
RM>       -c 
RM>       --nocase 
RM>   """ 
RM> ...

RM>   def usage(self):
RM>       """ Benutzungshilfe druecken """
RM>       # Urspruengliche Parrent-Methode anrufen
RM>       MyGrep1.usage(self)
RM>       # Help-Erweiterung
RM>       usage =\
RM>       '    -c | --nocase   ignore case'
RM>       print usage 

RM> Takze rozsiril som help tak ze vytlacim stary help + este jeden riadok




RM> Roman Miklos <RMiklos na pss.sk> 
RM> Sent by: python-bounces na py.cz
RM> 10.11.2006 15:38
RM> Please respond to
RM> Konference PyCZ <python na py.cz>


RM> To
RM> Konference PyCZ <python na py.cz>
RM> cc

RM> Subject
RM> Re: [python] class a subclass






RM> 1)Mozes premenovat prn v triede dietata, t.j. v b napr. na prnb, to
RM> znamena neprekryvat prn() v a:

RM> class a:
RM>     def prn(self):
RM>         print 'a',self
RM>     def ma(self):
RM>         self.prn()

RM> class b(a):
RM>     def prnb(self):
RM>         print 'b',self
RM>     def ma(self):
RM>         '''prekryje a.ma()'''
RM>         a.ma(self)

RM> x=b()
RM> x.ma()

RM> 2) Alebo ak potrebujes v prn() objektu b nieco z prn() objektu a mozes 
ju
RM> najprv zavolat a potom tam este nieco dodat:



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


Mgr. Ing. Roman MIKLÓ© 
Prvá stavebná sporiteµňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 



Daląí informace o konferenci Python