您的位置:首页 > 编程语言 > Python开发

python 的@classmethod &&@staticmethod

2016-05-26 06:25 543 查看
class A(object):
def foo(self,x):
print "executing foo(%s,%s)"%(self,x)

@classmethod
def class_foo(cls,x):
print "executing class_foo(%s,%s)"%(cls,x)

@staticmethod
def static_foo(x):
print "executing static_foo(%s)"%x

a=A()

一般方法将实例对象本身隐式传入方法中作为第一个参数:

a.foo(1)
# executing foo(<__main__.A object at 0xb7dbef0c>,1)


@classmethod方法将实例对象的类作为第一个参数隐式(或显示)传入方法中作为第一个参数:
a.class_foo(1)
# executing class_foo(<class '__main__.A'>,1)


@staticmethod方法既不传入实例对象本身也不传入实例对象的类作为参数
a.static_foo(1)
# executing static_foo(1)

A.static_foo('hi')
# executing static_foo(hi)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: