【发布时间】:2015-01-21 23:03:25
【问题描述】:
我只是在学习如何制作课程,并且我试图完成我的一项作业,但我很难将变量设为私有。我正在创建一个存储 ID、余额和年利率的 Account 类。所有这些都有默认值或可以设置。我的代码是这样的
class Account:
def __init__(self, ID=0, balance=100, annualInterestRate=0.0):
self.ID = int(ID)
self.balance = float(balance)
self.annualInterestRate = float(annualInterestRate)
account = Account()
print(account.ID)
print(account.balance)
print(account.annualInterestRate)
一切正常,但如果我尝试将变量设为私有(通过在变量前添加“__”),然后尝试访问这些值,我会得到一个 AttributeError。有谁知道我做错了什么?
...
self.__ID = int(ID)
self.__balance = float(balance)
self.__annualInterestRate = float(annualInterestRate)
account = Account()
print(account.ID)
print(account.balance)
print(account.annualInterestRate)
【问题讨论】:
-
归功于name mangling。
-
短版:只需使用一个下划线。或者,为了它的价值:不要打扰私有变量(也许只有当你使用属性时):你的第一个版本很好。由于 Python 不强制访问私有变量,我从来没有看到它的用途。
-
您更改了他们的名称,为什么您希望旧名称继续有效?此外,这不正是您在将事情设为私有时尝试做的事情吗?
-
RemcoGerlich 是对的。在一般的 OOP 术语中,不能在声明范围之外访问“私有”字段(在这种情况下,在类定义之外)
-
你应该和你的同学谈谈。看来你们都在同一个班,问同样的问题:stackoverflow.com/questions/27117010/…
标签: python class variables private