Discuss / Python / 为什么@property之后,变量前面必须加'_'?

为什么@property之后,变量前面必须加'_'?

Topic source

安Lau

#1 Created at ... [Delete] [Delete and Lock User]

将变量前面的'_'去除之后就会报错

class Stu(object):
    @property
    def score(self):
        return self.score
    @score.setter
    def score(self, value):
        self.score = value
t = Stu()
t.score = 90

返回

RecursionError: maximum recursion depth exceeded

按照之前那种笨办法,却没有这种情况

class Stu(object):
    def score(self):
        return self.score
    def score(self, value):
        self.score = value
t = Stu()
t.set_score(90)
t.get_score()
#返回90,没有问题

安Lau

#2 Created at ... [Delete] [Delete and Lock User]

倒数第二段代码搞错了

class Stu(object):
    def get_score(self):
        return self.score
    def set_score(self, value):
        self.score = value

  • 1

Reply