首页 > 其他 > 详细

利用描述符自定制property

时间:2019-10-14 00:22:00      阅读:90      评论:0      收藏:0      [点我收藏+]

property 即静态方法

class Lazyproperty:
    def __init__(self,func):
        self.func = func
    def __get__(self, instance, owner):
        print(‘正在执行get方法‘)
        if instance is None:
            return self
        res = self.func(instance)
        return res

class Room:
    def __init__(self,name,width,length):
        self.name = name
        self.width = width
        self.length = length
    @Lazyproperty  #area = Lazyproperty(area)
    def area(self):
        return self.width * self.length
    @property   #自带的property方法
    def area1(self):
        return self.width * self.length


r1 = Room(‘jinling‘,10,10)
print(r1.area)
print(Room.area1)
print(Room.area)

property补充

class Foo:
    @property
    def AAA(self):
        print(‘get的时候运行‘)
    @AAA.setter
    def AAA(self,val):
        print(‘set的时候运行我啊‘,val)
    @AAA.deleter
    def AAA(self):
        print(‘del的时候运行我啊‘)

#只有在属性AAA定义property后才能定义AAA.setter, AAA.delete
f1 = Foo()
f1.AAA
f1.AAA = ‘jinling‘
del f1.AAA

技术分享图片 

另一种用法

class Foo:

    def get_AAA(self):
        print(‘get的时候运行‘)

    def set_AAA(self,val):
        print(‘set的时候运行我啊‘,val)

    def del_AAA(self):
        print(‘del的时候运行我啊‘)

    AAA = property(get_AAA,set_AAA,del_AAA)
f1 = Foo()
f1.AAA
f1.AAA = ‘jinling‘
del f1.AAA

技术分享图片  

 

 

利用描述符自定制property

原文:https://www.cnblogs.com/dabai123/p/11668896.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!