2010年06月05日 星期六 08:13
首先要知道一般的python类方法第一个参数是self,差别主要就在这里。静态方法不需要第一个参数是self,因此它和普通的非类的方法差不多,可以理解为使用类来封装了一些公共函数。而类方法第一个参数是cls(当然叫self也可以),它是类对象本身,而不是实例对象本身。
2010年06月05日 星期六 08:23
1.那类方法的作用呢?
2.静态方法和类方法都可以通过类调用或者实例调用,这中间的区别是什么?
2010年06月05日 星期六 08:32
就是相当于类的静态方法,不需要创建实例就可以使用。和静态的很象,但是因为第一个参数是类对象,所以还是可以直接访问类的一些属性。
区别就是可以直接通过参数访问的对象不同。
2010年06月05日 星期六 08:42
好的,我贴点help的内容慢慢理解理解。
help(classmethod)
Help on class classmethod in module __builtin__:
class classmethod(object)
| classmethod(function) -> method
|
| Convert a function to be a class method.
|
| A class method receives the class as implicit first argument,
| just like an instance method receives the instance.
| To declare a class method, use this idiom:
|
| class C:
| def f(cls, arg1, arg2, ...): ...
| f = classmethod(f)
|
| It can be called either on the class (e.g. C.f()) or on an instance
| (e.g. C().f()). The instance is ignored except for its class.
| If a class method is called for a derived class, the derived class
| object is passed as the implied first argument.
help(staticmethod)
Help on class staticmethod in module __builtin__:
class staticmethod(object)
| staticmethod(function) -> method
|
| Convert a function to be a static method.
|
| A static method does not receive an implicit first argument.
| To declare a static method, use this idiom:
|
| class C:
| def f(arg1, arg2, ...): ...
| f = staticmethod(f)
|
| It can be called either on the class (e.g. C.f()) or on an instance
| (e.g. C().f()). The instance is ignored except for its class.
2010年06月05日 星期六 08:47
不是很清楚嘛。
2010年06月05日 星期六 08:51
嗯。是对差别讲的不是很清楚。
老大这个如何?
2010年06月05日 星期六 11:11
差别就是定义时不一样,正如前面所说的,就是第一个参数的差别。正是因为有这个差别,所以决定了你能访问参数的属性。不知道你还有哪里不明白?
2010年06月05日 星期六 17:09
我明白了,谢谢老大。
Zeuux © 2024
京ICP备05028076号