python单下划线变量

silentwins 2018-03-22 11:52:25
from decimal import Decimal

########################################################################
class Fees(object):
""""""

#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
self._fee = None

#----------------------------------------------------------------------
def get_fee(self):
"""
Return the current fee
"""
return self._fee

#----------------------------------------------------------------------
def set_fee(self, value):
"""
Set the fee
"""
if isinstance(value, str):
self._fee = Decimal(value)
elif isinstance(value, Decimal):
self._fee = value

fee = property(get_fee, set_fee)


结果:
>>> f = Fees()
>>> f.set_fee("1")
>>> f.fee
Decimal('1')
>>> f.fee = "2"
>>> f.get_fee()
Decimal('2')


请问为什么f.fee能被访问?代码中都没有f.fee的声明啊,只有f._fee的声明,它们之间是什么约定关系?是哪里起了作用?查资料没查到。谢谢!
...全文
411 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
混沌鳄鱼 2018-03-23
  • 打赏
  • 举报
回复
最下面这句就是声明 fee = property(get_fee, set_fee) property是个类,把从get和set方法构造一个属性。还可以加一人del方法就全了。
陈年椰子 2018-03-23
  • 打赏
  • 举报
回复
"单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;"双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
oyljerry 2018-03-23
  • 打赏
  • 举报
回复
protected的变量,用来进行一些访问控制

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧