【python小白】 问关于property的顺序问题
问题描述
代码如下:
class Test(object): def __init__(self):self.__num = 100 def setNum(self,newNum):print('----setter-----')self.__num = newNumdef getNum(self):print('----getter-----')return self.__numnum = property(getNum,setNum) #get在前,set在后 #num = property(setNum,getNum) #set在前,get在后 t = Test()print(t.getNum())t.setNum(2000)print(t.getNum())print('----'*10)t.num = 5000print(t.num)
运行结果:

在代码中,property的那一部分,get在前面,set在后面,执行结果正常。然后如果把set放在前面,get放在后面,程序就出错了。
我想问下,这个为什么跟位置还有关系呢?不是程序自动识别的么?为什么换了位置就错误了?
问题解答
回答1:我试了一下,错误信息是:TypeError: getNum() takes 1 positional argument but 2 were given
getter接收一个参数,setter接收两个参数,互换了传入的参数个数就不匹配了。
这个定义里是有顺序的:class property(fget=None, fset=None, fdel=None, doc=None)
相关文章:
1. javascript - sublime怎么支持webp的浏览?2. javascript - nginx 反向代理 js跨域问题?3. javascript - sublime已经安装了babel插件和sublimelinter-jshint为什么还是显示es6语法错误?4. javascript - 图片能在网站显示,但控制台仍旧报错403 (Forbidden)5. python - pig latin问题 总是出现list/string index out of range6. html5 - 为什么浏览器可以显示HTML文档中未被定义的标签?7. css3 - img垂直水平居中问题8. nginx 80端口反向代理多个域名,怎样隐藏端口的?9. 为什么标题文字前面加的小色块标识不显示10. mysql - 在PHPMyadmin上乱捣鼓后出现 了 - #2002 - — 服务器没有响应(或本地服务器的套接字没有正确设置)。

网公网安备