Does python have the static function member like C++

goodwolf Robert.Katic at gmail.com
Wed Apr 11 02:39:19 EDT 2007


On Apr 11, 5:19 am, "7stud" <bbxx789_0... at yahoo.com> wrote:
> On Apr 10, 9:08 pm, "人言落日是天涯,望极天涯不见家" <kelvin.... at gmail.com> wrote:
>
> > I define the class like this:
> > class AAA:
> >     counter = 0
> >     def __init__(self):
> >         pass
> >     def counter_increase():
> >         AAA.counter += 1
> >         print "couter now :", AAA.counter
>
> > But how could I call the function "counter_incrrease" ?
>
> > Thanks !
>
> 1)
> class AAA:
>     counter = 0
>     def __init__(self):
>         pass
>     @staticmethod
>     def counter_increase():
>         AAA.counter += 1
>         print "couter now :", AAA.counter
>
> AAA.counter_increase()
>
> 2)
> class AAA:
>     counter = 0
>     def __init__(self):
>         pass
>     def counter_increase():
>         AAA.counter += 1
>         print "couter now :", AAA.counter
>     counter_increase = staticmethod(counter_increase)
>
> AAA.counter_increase()
>
> 3)
> class AAA:
>     counter = 0
>     def __init__(self):
>         pass
>     def counter_increase(self):
>         AAA.counter += 1
>         print "couter now :", AAA.counter
> aaa = AAA()
> AAA.counter_increase(aaa)

1. In this case you will prefer a classmethod instead a staticmethod.
2. If counter is the number of instances of class AAA then you will
incrase counter inside __init__ method.

class AAA (object):
    counter = 0
    def __init__(self):
        type(self).counter_increase()
    @classmethod
    def counter_increase(cls):
        cls.counter += 1

or

class AAA (object):
    counter = 0
    def __init__(self):
        type(self).counter += 1




More information about the Python-list mailing list