Python装饰器语法(@staticmethod/@classmethod@property)

@staticmethod 不需要表示自身对象的self和自身类的cls参数,就和使用普通的函数一样。

@classmethod 不需要self参数,但是第一个参数需要表示自身类的cls参数。

@property 表示类的属性方法,如果没有__init__的存在,则@proprety失效

class A(object):  
    bar = 1  
  
    def foo(self):  
        print ' call function foo in class A '  
 
    @staticmethod  
    def static_foo():  
        print 'static_foo'  
        print A.bar  
 
    @classmethod  
    def class_foo(cls):  
        print 'class_foo'  
        print cls.bar  
        cls().foo()  
A.static_foo()  
A.class_foo() 

"""
执行结果
static_foo
1
class_foo
1
 call function foo in class A 
那最后一个装饰器是什么意思呢。
简而言之就是可以在调用的时候不用加()
"""
class A(object):  
    def __init__(self,name,age):  
        self.name = name  
        self.age = age  
    @property  
    def static_foo(self):  
        print self.name  
        return 'yes'  
  
num = A("Liu","21")  
num.static_foo
"""
执行结果是:
Liu
如果是 print num.static_foo  呢?
结果是
Liu
yes
None

还有一点是,类里面没有__init__ 的话,就@property失效了。
"""
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 熬着的不是夜不是命是寂寞 我要如何积极的生活? 生命中的那半个已然出现 不知今日为何甚是想念 许是为明日烦忧 想有...
    任性小姐01阅读 170评论 0 0
  • 时间就是一把双刃剑,有时候突然觉得孤独后怕,总觉得这一切都不是真的一样。多么想时光快一点转到属于我的那个时间段。 ...
    天空飘的熊阅读 111评论 0 0
  • 夏小琼坐在海边,听着波涛声,“刷——刷——刷——” 这座岛没有早晚之分,一直被黑夜笼罩着,夏小琼的照明工具是一盏核...
    苏眠春阅读 531评论 2 3
  • 长久以来,我有排解不了的忧愁,我的身徘徊在幽僻的路上,我的心飘浮在长空里。我的世界似乎过早地进入了黄昏,心里有很多...
    水云汀阅读 635评论 0 4

友情链接更多精彩内容