Python论坛  - 讨论区

标题:Python中静态方法和类方法谁能讲讲?

2010年06月05日 星期六 06:20

能够多点话语讲讲实际运用方面的用途,再举几个例子比较好。

新手初学,理解归理解,但是用处方面认知困难。

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哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号