Discuss / Python / 有一个疑问,还望解答

有一个疑问,还望解答

Topic source

aio2014

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

“此时,@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值” 我对这句话不是很明白,@score.setter是@property创建的,那么为什么我们还要再在代码中写出?还有怎么知道@property创建的是@score.setter而不是@score.a或@setter.score?

爱梦男孩

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

我也没有明白……

Drak_C

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

我的理解是@property只是简化了访问类的变量的过程 没有@property之前要调用set和get函数

>>> s.set_score(60) # ok!
>>> s.get_score()
60

加上@property之后访问能更方便:

>>> s.score = 60 # OK,实际转化为s.set_score(60)
>>> s.score # OK,实际转化为s.get_score()
60

getter方法和、setter方法还是要自己定义的。 至于@property创建的是 @函数名.setter 这是内置的@property装饰器本身定义的吧。


  • 1

Reply