星期六, 十二月 29, 2007

python classmethod和staticmethod

在早期的python版本(2.2之后)中就有了这两个东东,staticmethod就对应于C++的静态成员函数,而classmetho在C++中是找不到对等体的(它的第一个参数是类对象,而不是类实例)。

def smethodimp(arg):
  do somthing
smethod = staticmethod(smethodimp)

def cmethodimp(cls, arg):
  do something
cmethog = classmethod(cmethodimp)

一般情况下,smethod和smethodimp可以用同一个名字(比如都叫smethod),同样cmethod和cemthodimp也可以同名。

这样的定义总是怪怪的,在2.4版本之后,我们可以用decorator来重写这难看的代码,不过decorator的功能远超出这么简单,我暂时还不能理解其精髓啊(等用时再看吧)。

0 Comments:

发表评论

<< Home