为了账号安全,请及时绑定邮箱和手机立即绑定

关于@property的用法,如何理解把方法装饰成属性调用?

如何理解@property,能不能结合例子说明一下。

用装饰器@property 把 get/set 方法“装饰”成属性调用?这句话怎么个理解,求大神们赐教。

正在回答

4 回答

其实廖老师是用get和set举了个例子,也就是说在没有使用property装饰器之前是需要用到get和set方法的,使用property后就可以不用在定义get和set的方法了

@property的作用是将被装饰的函数可以被当做属性一样调用

0 回复 有任何疑惑可以回复我~

用def是在类里边定义类的方法,而用def__init__是在类里边定义类的属性。

用def定义的类方法用实例名.方法名(x)的形式调用,而用def__init定义的类属性用实例名.属性名=x调用。

如果我想用调用类属性的形式调用类方法呢?那就加个@property就可以了。实际上@property就是把类方法变成了一个类属性。

1 回复 有任何疑惑可以回复我~
def grade(self):
        if self.score>=80:
            return 'A'
        if self.score<60:
            return'C'
        return 'B'

原理不知道,以下希望能帮到你

  1. 不加@property。那就是方法,用s.grade()调用,可得到正确返回值(CBA)

  2. 加@property。装饰为属性,用s.grade即可返回CBA

1 回复 有任何疑惑可以回复我~

我也是刚学,我是这么理解的,@property这个装饰器后,原来的get和set 就失效了,等于你重写了get/set方法

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

关于@property的用法,如何理解把方法装饰成属性调用?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信