[python] Statické metody v Pythonu

Jan Matejka matejka na cat.cz
Středa Listopad 8 16:57:32 CET 2006


> Metoda konverze stringu na radiány nepotřebuje žádné proměnné 
> zvenku a nezávisí na instanci, proto je zbytečné aby měla 
> self. Ale chci po ní, aby se dala předefinovat v potomcích. 
> To byl můj cíl a záměr. Děkuji všem za trpělivost.
> 

Ten self je pro vnitřní fungování nezbytný (rozlišuje se podle něj třída
instance objektu, což potřebujete), takže cílem snažení je aby v těch
konverzních funkcích opticky nepřekážel ten self v parametrech metody (je
potřeba ho skrýt).


A výsledek je, předpokládám, že to funguje v rámci koncepce pythonu tak jak
má:

class A(object):
    @staticmethod
    def m():
        print "A::m"

class B(A):
    pass

class C(B):
    @staticmethod
    def m():
        print "C::m"


A.m()
B.m()
C.m()

A().m()
B().m()
C().m()

vypíše:

A::m
A::m
C::m
A::m
A::m
C::m

Tzn. dědění statických metod funguje. 

Jan Matějka



Další informace o konferenci Python