Static method object not callable

Shalabh Chaturvedi shalabh at cafepy.com
Wed Aug 11 05:26:38 CEST 2004


Edward Diener wrote:

> This simple code example gives me the message, "TypeError: 'staticmethod'
> object is not callable".
> 
> class X(object):
>   def Y(x):
>     print x
>   Y = staticmethod(Y)
>   ad = { 1 : Y }
>   def Z(self):
>     self.ad[1](3)
> x = X()
> x.Z()
> print "Done."
> 
> I know there must be a way to have a class attribute reference a static
> method, and then call that static method through the reference, so if
> anyone can correct this it would be appreciated.

A staticmethod has to be accessed from the class or an instance. But you can
put the 'bare' function in your dictionary before you make a staticmethod
out of it:

class X(object):
  def Y(x):
    print x
  ad = { 1 : Y }
  Y = staticmethod(Y)
  def Z(self):
    self.ad[1](3)
x = X()
x.Z()
print "Done."

This prints:

3
Done.

HTH,
Shalabh

        




More information about the Python-list mailing list