Python的类方法

I used to work with PHP and recently I was asking myself, whats going on with this classmethod? Python manual is very technical and very short in words so it wont help with understanding that feature. I was googling and googling and I found answer -> http://code.anjanesh.net/2007/12/python-classmethods.html.

If you are lazy to click it. My explanation is shorter and below. :)

in PHP (maybe not all of you know PHP, but this language is so straight forward that everybody should understand what I'm talking about) we have static variables like this:


class A
{

   
static protected $inner_var = null;

   
static public function echoInnerVar()
   
{
        echo
self::$inner_var."\n";
   
}

   
static public function setInnerVar($v)
   
{
       
self::$inner_var = $v;
   
}

}

class B extends A
{
}

A
::setInnerVar(10);
B
::setInnerVar(20);

A
::echoInnerVar();
B
::echoInnerVar();

The output will be in both cases 20.

However in python we can add @classmethod decorator and thus it is possible to have output 10 and 20 respectively. Example:


class A(object):
    inner_var
= 0

   
@classmethod
   
def setInnerVar(cls, value):
        cls
.inner_var = value

   
@classmethod
   
def echoInnerVar(cls):
       
print cls.inner_var


class B(A):
   
pass


A
.setInnerVar(10)
B
.setInnerVar(20)

A
.echoInnerVar()
B
.echoInnerVar()

Smart, ain't?

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!
















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/archive/2011/07/04/2097646.html,如需转载请自行联系原作者
上一篇:python 详解re模块


下一篇:杭州中天微系统加入全球半导体联盟