[python] class a subclass

mtip mtip na atlas.cz
Pátek Listopad 10 16:05:27 CET 2006


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:





Další informace o konferenci Python