课程
/后端开发
/Python
/python进阶
如何理解@property,能不能结合例子说明一下。
用装饰器@property 把 get/set 方法“装饰”成属性调用?这句话怎么个理解,求大神们赐教。
2020-01-15
源自:python进阶 6-7
正在回答
其实廖老师是用get和set举了个例子,也就是说在没有使用property装饰器之前是需要用到get和set方法的,使用property后就可以不用在定义get和set的方法了
@property的作用是将被装饰的函数可以被当做属性一样调用
用def是在类里边定义类的方法,而用def__init__是在类里边定义类的属性。
用def定义的类方法用实例名.方法名(x)的形式调用,而用def__init定义的类属性用实例名.属性名=x调用。
如果我想用调用类属性的形式调用类方法呢?那就加个@property就可以了。实际上@property就是把类方法变成了一个类属性。
def grade(self): if self.score>=80: return 'A' if self.score<60: return'C' return 'B'
原理不知道,以下希望能帮到你
不加@property。那就是方法,用s.grade()调用,可得到正确返回值(CBA)
加@property。装饰为属性,用s.grade即可返回CBA
我也是刚学,我是这么理解的,@property这个装饰器后,原来的get和set 就失效了,等于你重写了get/set方法
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计