python 中的static-method (静态函数), classmethod(类函数 ), 成员函数
简介
类似Java、CPP中的类,可以定义static method、class method,python内也可以定义这类方法体。
这是通过python的注解来做的。
定义方法
类函数(@classmethod):定义类方法,可以通过类或者实例调用。方法的第一个参数是class对象。
成员函数: 实例的方法, 只能通过实例进行调用;第一个参数是该实例self。
静态函数(@staticmethod): 定义静态方法,可以通过类或者实例调用。第一个参数不需要是class对象或者实例self、
示例
来自网友的示例,可以看到
#-*-coding:utf-8-*-
class PythonMethodSample(object):
_g = 1
def instanceMethod(self,x):
print('executing instanceMethod(%s,%s)' %(self,x))
@classmethod
def classMethod(cls,x):
print('executing classMethod(%s,%s)' %(cls,x))
@staticmethod
def staticMethod(x):
print('executing staticMethod(%s)' %x)
a = PythonMethodSample()
a.instanceMethod(1)
a.classMethod(1)
PythonMethodSample.classMethod(1)
a.staticMethod(1)
PythonMethodSample.staticMethod('hi')
print(a.instanceMethod)
print(a.classMethod)
printa.staticMethod)
检查输出
executing instanceMethod(<__main__.PythonMethodClass object at 0x1004c3790>,1)
executing classMethod(<class '__main__.PythonMethodClass'>,1)
executing classMethod(<class '__main__.PythonMethodClass'>,1)
executing staticMethod(1)
executing staticMethod(hi)
<bound method PythonMethodClass.instanceMethod of <__main__.PythonMethodClass object at 0x1004c3790>>
<bound method type.classMethod of <class '__main__.PythonMethodClass'>>
<function staticMethod at 0x1004dd410>