jj predefinuje prvni funkci, takze pretezovani funkce ala C++ podle poctu parametru neumoznuje bez **keywords resp. * args (Musim projit jeden stary zdrojak kde jsem tohle pouzival a "nejak" to fungovalo :/, ale v ramci metod se da pouzit viz prvni priklad nebo tenhle fukcni kod:
class Master: def a(self, x=0): print 'jeden argument' class Commander(Master): def a(self, x=0,y=0): print 'dva argumenty' def b(self, x=0, y=0): Master().a() a = Master() a.a() # puvodni metoda a b = Commander() b.a() # nova metoda a b.b() # puvodni metoda a coz je pretezovani metod ve tride Hodi se to pokud clovek potrebuje stejne chovani jako built in typy, nebo potrebuje zmenit chovani built in typu, popripadne si chce zjednodusit nektere zapisy, osobne jsem to v nejak zvlast velke mire jeste nevyuzil, davam prednost metodam, takze misto: NewCollection = CollectionA + CollectionB ##objekt Collection nadefinovany nekde ve tride, operator + nadefinovany ve stejne tride pomoci def __add__: etc... ## pouzivam napr: NewCollection.Add(CollectionA) ## metoda Add menici objekt in-place NewCollection.Add(CollectionB) 2008/8/29 David Michal <[EMAIL PROTECTED]>: >> -----Original Message----- >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of >> Petr Zloty >> Sent: Friday, August 29, 2008 10:59 AM >> To: Konference PyCZ >> Subject: Re: [python] Přetěžování metod v Pythonu >> >> pretezovani operatoru: >> >> ve tride definuj metodu __add__: pro scistani __mul__ pro nasobeni >> atd.. >> >> tenhle priklad funguje pokud se pouzijou keywords argumenty, >> prirovnanim k C staci incializovat promenne, tudiz tohle funguje: >> >> def a(x=0): >> print x >> >> def a(x=0,y=0): >> print x + y >> >> a(1) >> a(1,1) >> > No funguje, ale ta prvni definice a je tam zbytecna. Python je interpretovany > jazyk, takze pri provadeni kodu jede pekne radek po radce. V tomhle pripade > tedy nejdrive nadefinuje a jako a(x=0)... a pak to prepise definici > a(x=0,y=0)....Takze priklad: > > def a(x=0): > print 'jeden argument' > > def a(x=0,y=0): > print 'dva argumenty' > > a(1) > a(1,1) > > uz moc dobre fungovat nebude. > > Ad k tomu pretizeni operatoru, kdy to pouzivat? V jakem pripade se to hodi? > > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python