Python @property 详解

  • 类方法转为只读属性

  • 重新实现属性的setter, getter, deleter方法

类方法转为只读属性

class Jhy(object):
    """docstring for Jhy"""
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def all(self):
        return ('a: {}, b: {}'.format(self.a, self.b))
    @property
    def all2(self):
        return('a: {}, b: {}'.format(self.a, self.b))
    

if __name__ == '__main__':
    jhy = Jhy('name1', 'name2')
    print(jhy.all()) #方法调用有()
    print(jhy.all2) #属性调用没()
    jhy.all2 = 11 # 这个属性赋值会报错

输出:
a: name1, b: name2
a: name1, b: name2
jhy.all2 = 11 AttributeError: can't set attribute

property代替 setter和getter, deleter方法, 类方法转为可修改属性

class Jhy(object):
    """docstring for Jhy"""


    @property
    def all(self):
        return self._all

    @all.setter #  设置属性修改方法 ,这里all = property(all)
    def all(self, a):
        if a != 1:
            self._all = a 
        else:
            print('Need a != 1')

    @all.deleter
    def all(self):
        del self._all
        pass



    

if __name__ == '__main__':
    jhy = Jhy()
    jhy.all = 11
    print(jhy.all) # 输出11
    del jhy.all
    print(jhy.all) # 报错 因为已经删除了
 输出:
11
Traceback (most recent call last):
  File "C:\Users\jhy\Desktop\Tensorflow Demo\2.py", line 36, in <module>
    print(jhy.all)
  File "C:\Users\jhy\Desktop\Tensorflow Demo\2.py", line 14, in all
    return self._all
AttributeError: 'Jhy' object has no attribute '_all

实例

tensorflow/python/ops/control_flow_ops.py

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

相关阅读更多精彩内容

  • 一直在守望 等待一艘船,开往天涯 采集渡口旁的一朵 那一朵还来不及凋谢的花 揣在胸口,用大地回春的温柔 捂热逐渐麻...
    重庆崽儿阅读 1,328评论 3 13
  • 《重要的事情说三点》 【R】 半吊子的道歉会产生反效果 所谓道歉到底是什么? 道歉有很多解释,但大多数人都是为了不...
    Emma和茶阅读 1,616评论 2 0
  • 烟雨农家,笼云雾、黛巘依稀。江村水郭,驿桥溪水青堤。小鸟虬枝啄翠,撒些儿珠碎,蜂蝶翩飞。塘池,微涟漪、游鲤似迷。 ...
    刘小地阅读 3,449评论 36 96

友情链接更多精彩内容