property

将对象的方法伪装成属性

property与__setattr___setiterm_

class Foo:
    @property
    def AAA(self):
        print("get 的时候运行")

    @AAA.setter
    def AAA(self,value):
        print("set 的时候运行")
    @AAA.deleter
    def AAA(self):
        print("delet 的时候运行")

a = Foo()
a.AAA
a.AAA = "summer"
del a.AAA

get 的时候运行
set 的时候运行
delet 的时候运行
class Bar():
    def __getattr__(self, item):
        print("get 不到的时候运行")

    def __setattr__(self, key, value):
        print("通过属性set的时候运行")

    def __delattr__(self, item):
        print("通过属性delete的时候运行")
b = Bar()
b.name
b.name = "summer"
del b.name

get 不到的时候运行
通过属性set的时候运行
通过属性delete的时候运行
class F:
    def __getitem__(self, item):
        print("通过字符串get的时候运行")

    def __setitem__(self, key, value):
        print("通过字符串set的时候运行")

    def __delitem__(self, key):
        print("通过字符串删除的时候执行")
c = F()
c["name"]
c["name"] = "summer"
del c["name"]
通过字符串get的时候运行
通过字符串set的时候运行
通过字符串删除的时候执行
posted on 2018-08-27 20:07  summer-rain  阅读(70)  评论(0编辑  收藏  举报