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

python中不用getter和setter?

python中不用getter和setter?

慕慕森 2019-04-06 08:31:34
我看到一个文章(http://blog.renren.com/share/22109505...)Getter和setter是坏蛋。坏蛋,魔鬼!Python对象不是JavaBean。不要写什么getter和setter,然后还把它们包装在“属性”里面。它直到你能证明你需要比一个简单访问复杂一点的功能时才有意义,否则,不要写getter和setter。它们是CPU时间的浪费,更要紧的是,它们还是程序员宝贵时间的极大浪费。不仅仅对于写代码和测试的人,对于那些要阅读和理解它们的人也是。在Java中,你必须使用getter和setter因为公共字段不允许你以后改变想法再去使用getter和setter。在Python中,这样做很傻,因为你可以以一个普通特性开始并可以在任何时间改变你的想法,而不用影响到这个类的任何客户。所以不要写getter和setter。但是当我想设置对象的一个属性时,是用obj.attr=value这样直接赋值么?但是当我赋值某一个属性attr1时,其他有些关联属性attr2是应该可以自动生成的(通过对attr1的一些操作得到attr2应有的值),如果有setter,那么这个运算的过程可以写在setter里,如果不用setter那这个运算应该在哪里写呢?谢谢
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

要不你就运算好了以后直接赋值要不你就写一个setAttr(value)方法,因为是方法,意味着可能存在其他运算,提醒其他人这里可能有magic.
同理可以写getAttr()方法.本来是一个方法,你也确确实实写了方法,硬要假装自己是attrbute,何苦呢?
                            
查看完整回答
反对 回复 2019-04-06
  • 2 回答
  • 0 关注
  • 376 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信