RE: [python] Přetížení třídní metody

Petr Prikryl Prikryl na skil.cz
Čtvrtek Květen 5 08:41:54 CEST 2005


Jaroslav Aster napsal...
> 
> [...] chtěl bych se zeptat, zda jde v Pythonu nějak
> přetížit třídní metoda. Tj. něco takovédleho (což nefunguje):
> 
> def xmlToNative(self, xmlFileName):
>     print "objectmethod"
> 
> @classmethod
> def xmlToNative(cls, profile, xmlFileName):
>     print "classmethod"
> 
> Změna názvu metody je jasná, ale to právě nechci. 
> Za případnou radu děkuji.

Předpokládám, že nežádoucí je jiné jméno metody 
při jejím volání. Při definici nepokládám jiné
jméno metody za závadu. Pak lze psát:

class C:

    def __init__(self):
        self.method = self.objectmethod    

    def objectmethod(self, fname):
        print "objectmethod:", fname

    @classmethod
    def method(cls, profile, fname):
        print "classmethod:", profile, fname


C.method("profil", "soubor")
C().method("soubor")

Pro případ, že byste byl student Masarykovy university 
a tohle byla domácí úloha, ponechávám vysvětlení na Vás.

-- 
Petr Prikryl (prikrylp at skil dot cz) 



Další informace o konferenci Python