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