python自定制property

class Pro:
    def __init__(self,func):
        self.func = func

    def __get__(self, instance, owner):
        return self.func(instance)



class Room:
    def __init__(self,name,width,length):
        self.name = name
        self.width = width
        self.length = length

    @Pro #area = Pro(area) 由与Pro是非数据描述符,所以这里就相当于给类的属性area做成了描述符,area.func = area这个函数
    def area(self):
        return self.width * self.length

r1 = Room('alex',12,2)
print(r1.area)  #执行r1.area时,会触发Pro描述符中的get方法,get方法执行的其实就是area方法传入的instance就是r1这个对象

猜你喜欢

转载自www.cnblogs.com/xieys-1993/p/11593484.html