python常见函数修饰符总结(不断更新)

本文介绍了Python中三种装饰器的使用方法:@classmethod用于定义类方法,property用于将方法作为属性访问,而@staticmethod则用于创建不需要实例即可调用的静态方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Last Update: 2013-4-9

欢迎转载

openxmpp@163.com


1) @classmethod

用classmethod修饰表示这是一个类方法,如果没有用@classmethod修饰,则表示这是一个对象方法,使用时必须与一个对象绑定,如下

class MyClass():
    def thisIsClassMethod(self):
        print "this is a class method"

if __name__ == "__main__":
    c = MyClass()
    MyClass.thisIsClassMethod(c) #调用时传入参数c,否则编译错误
如果采用@classmethod修饰,则不用传入参数c,可以用下面方式调用:

class MyClass():
    @classmethod
    def thisIsClassMethod(cls,parameter):
        print "this is a class method"
        print cls.__name__
        print type(cls) #打印类型为classobj


if __name__ == "__main__":
    MyClass.thisIsClassMethod(None) #不用与对象绑定
    print type(MyClass)

2) property修饰符

被property修饰符修饰的方法可以像属性一样被访问,如

class MyClass:
    def __init__(self,num):
        self._Num = num
    @property
    def Num(self):
        return self._Num

if __name__ == "__main__":
    c = MyClass(100)
    print c.Num   #注意,这里的访问形式看起来像是访问一个属性,但其实是一个方法

3) staticmethod修饰符

被staticmethod修饰符的表示这是一个类的静态方法,可以被类直接调用,与@classmethod的区别在于classmethod对应的方法的第一个参数为cls,为类的类型,而staticmethod不是
如下:
class MyClass:
    @staticmethod
    def thisIsStaticMethod():
        print "This is static method"

if __name__ == "__main__":
    MyClass.thisIsStaticMethod()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值