python的类方法和类的静态方法

来源:互联网 发布:软件过期了怎么办 编辑:程序博客网 时间:2024/05/16 06:38
python的类方法和类的静态方法 (2010-03-11 21:27)
分类: Python


python的类方法和类的静态方法,其实就是一个用@classmethod和@staticmethod修饰的类中的函数。其中类方法要在定义的时候指出在调用它时隐式赋给他的第一个参数,这个参数一般情况下是类本身(cls),这个有点像类的实例方法中代表类实例本身的self。类的静态方法在定义的时候就不用定义这个参数,因为他是静态方法不属于任何一个类实例。

========================================================================
类方法
classmethod( function)

Return a class method for function.
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:
    @classmethod
    def f(cls, arg1, arg2, ...): ...

The @classmethod form is a function decorator - see the description of function definitions in chapter 7 of the Python Reference Manual for details.
@classmethod是修饰方法的写法-请查阅Python手册第七章里面关于函数定义的描述.

It can be called either on the class (such as C.f()) or on an instance (such as 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.
它可以通过类调用(比如C.f()),也可以通过对象实例调用(比如C().f()).真正发挥作用的是类而不是类的实例对象.如果一个类方法被一个子类调用,这个子类的对象实例会作为第一个参数传给类方法.

Class methods are different than C++ or Java static methods. If you want those, see staticmethod() in this section. New in version 2.2. Changed in version 2.4: Function decorator syntax added.
Python的类方法不同于C++或Java的静态方法.如果你想要的是那样的静态方法,请查看staticmethod()方法,

=====================================================================
类的静态方法

staticmethod(function)
Return a static method for function.
为一个函数返回一个静态方法

A static method does not receive an implicit first argument. To declare a static method, use this idiom:
一个静态方法不接受一个隐式的第一个参数,要声明一个静态方法,用下面的方式:
class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
   
The @staticmethod form is a function decorator – see the description of function definitions in Function definitions for details.
@staticmethod是一个函数修饰器。

It can be called either on the class (such as C.f()) or on an instance (such as C().f()). The instance is ignored except for its class.
可以通过类(C.f())或者类实例(C().f())来调用。通过类实例来调用起作用的其实是类,而不是类实例。

Static methods in Python are similar to those found in Java or C++. For a more advanced concept, see classmethod() in this section.
python的静态方法和java与c++中的很像。一些更高级的概念看classmethod()这一节。

For more information on static methods, consult the documentation on the standard type hierarchy in The standard type hierarchy.
关于静态函数更多的信息,看The standard type hierarchy中标准类型继承的文档。
原创粉丝点击