[python] class a subclass

Roman Miklos RMiklos na pss.sk
Pátek Listopad 10 15:50:44 CET 2006


Realny priklad:

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

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

...

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

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

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

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

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




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


To
Konference PyCZ <python na py.cz>
cc

Subject
Re: [python] class a subclass






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

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

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

x=b()
x.ma()

2) Alebo ak potrebujes v prn() objektu b nieco z prn() objektu a mozes ju 
najprv zavolat a potom tam este nieco dodat:
class a:
    def prn(self):
        print 'a',self
    def ma(self):
        self.prn()

class b(a):
    def prn(self):
        a.prn(self)
        print 'b',self
    def ma(self):
        '''prekryje a.ma()'''
        a.ma(self)

x=b()
x.ma() 




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


To
python na py.cz
cc

Subject
[python] class a subclass






Zdravim vsechny, mam nasledujici problem:
potrebuji prekryt dve metody rodicovske tridy ve tride potomka, kde
metoda v rodici vola prekryvanou metodu rodice. Jenze ta potom vola metodu
potomka. Lze toto chovani nejak ovlivnit bez zasahu do rodice ?
Zde je priklad:
class a:
    def prn(self):
        print 'a',self
    def ma(self):
        self.prn()

class b(a):
    def prn(self):
        print 'b',self
    def ma(self):
        '''prekryje a.ma()'''
        a.ma(self)

x=b()
x.ma()

vysledkem je print z metody b.prn, a ja bych potreboval aby byl a.prn

Diky za pomoc. Mirek.


_______________________________________________
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 

_______________________________________________
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