【python小白】 问关于property的顺序问题
仅有的幸福
仅有的幸福 2017-07-05 10:35:06
[Python讨论组]

代码如下:

class Test(object):
    def __init__(self):
        self.__num = 100
        
    def setNum(self,newNum):
        print("----setter-----")
        self.__num = newNum
    
    def getNum(self):
        print("----getter-----")
        return self.__num
    
    num = 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 = 5000
print(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)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号