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

如果不用@property结果奇怪

class Student(object):


    def __init__(self, name, score):

        self.name = name

        self.__score = score


    @property

    def score(self):

        return self.__score


    @score.setter

    def score(self, score):

        if score < 0 or score > 100:

            raise ValueError('invalid score')

        self.__score = score


    def grade(self):

        pass


s = Student('Bob', 59)

print s.grade

print s.grade()


输出结果是 >

()


>是什么

正在回答

2 回答

property的本质是可以将类方法变成像实例属性一样调用

所以当你不加property的时候,直接打印返回的是一个类方法对象

加上()表示调用了该方法, 打印出来的是该函数的返回值

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

不知道,但是如果不加@property 这里就是调用了方法名称,而不是属性,得不到想要的结果

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

举报

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

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

进入课程

如果不用@property结果奇怪

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