codecamp

访问器 (getter) 和设置器 (setter)

访问器 (getter) 和设置器 (setter)

Tip
在访问和设置变量值时,如果访问器和设置器(又名为访问子 accessor 和变异子 mutator)可以产生有意义的作用或效果,则可以使用。

特别来说,如果在当下或者可以预见的未来,读写某个变量的过程很复杂或者成本高昂, 则应该使用这种函数。

如果一对访问器和设置器仅仅用于读写一个内部属性(attribute),你应该直接用公有属性取代它们。相较而言,如果设置操作会让部分状态无效化或引发重建,则需要使用设置器。显式的函数调用表示可能出现特殊的操作。如果只有简单的逻辑,或者在重构代码后不再需要访问器和设置器,你可以用属性(property)替代。

(译者注:重视封装的面向对象程序员看到这个可能会很反感,因为他们一直被教育:所有成员变量都必须是私有的!其实,那真的是有点麻烦啊。试着去接受Pythonic哲学吧)

访问器和设置器应该遵守命名规范,例如 get_foo() 和 set_foo()

如果之前的代码通过属性获取数据,则不能把重新编写的访问器/设置器与这一属性绑定。 应该让任何用老办法访问变量的代码出现显眼的错误,让使用者意识到代码复杂度有变化。

Python 语句规范 | Google 官方单行写法
Python 命名规范大全 | Google 官方 PEP-8 速查表
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }