在 Python 中声明私有变量
Declaring private variable in Python
我正在 Python
编写一个银行应用程序,并从这里 Banking Application 阅读一些源代码。 balance
class 定义如下:
class Balance(object):
""" the balance class includes the balance operations """
def __init__(self):
""" instantiate the class """
self.total = 0
def add(self, value):
""" add value to the total
Args:
value (int): numeric value
"""
value = int(value)
self.total += value
def subtract(self, value):
""" subtract value from the total
Args:
value (int): numeric value
"""
value = int(value)
self.total -= value
我的问题
由于不应在 class 之外访问余额详细信息,因此我们应该将属性 self.total
定义为 self.__total
,因为我们应该将其设为 private
而不是public
变量?我的思路对吗?
简而言之:Python 中没有真正的 "private" class 成员。运行时根本不支持内存保护,例如 Java。
双下划线前缀破坏了名称,因此它包含了它所使用的 class 的名称(例如,__total
会变成 _Balance__total
),但这主要用于允许 subclasses 定义看起来相同但引用不同字段的名称。
Python 中的标准约定是使用单个下划线前缀 — _total
— 对于应该被视为 "private" 或 [=25] 的 class 成员=],然后相信其他开发人员都是成年人并尊重这一点(当然,这并不总是一个安全的假设......)
非常很少见现代Python代码使用double-underscore属性。
我正在 Python
编写一个银行应用程序,并从这里 Banking Application 阅读一些源代码。 balance
class 定义如下:
class Balance(object):
""" the balance class includes the balance operations """
def __init__(self):
""" instantiate the class """
self.total = 0
def add(self, value):
""" add value to the total
Args:
value (int): numeric value
"""
value = int(value)
self.total += value
def subtract(self, value):
""" subtract value from the total
Args:
value (int): numeric value
"""
value = int(value)
self.total -= value
我的问题
由于不应在 class 之外访问余额详细信息,因此我们应该将属性 self.total
定义为 self.__total
,因为我们应该将其设为 private
而不是public
变量?我的思路对吗?
简而言之:Python 中没有真正的 "private" class 成员。运行时根本不支持内存保护,例如 Java。
双下划线前缀破坏了名称,因此它包含了它所使用的 class 的名称(例如,__total
会变成 _Balance__total
),但这主要用于允许 subclasses 定义看起来相同但引用不同字段的名称。
Python 中的标准约定是使用单个下划线前缀 — _total
— 对于应该被视为 "private" 或 [=25] 的 class 成员=],然后相信其他开发人员都是成年人并尊重这一点(当然,这并不总是一个安全的假设......)
非常很少见现代Python代码使用double-underscore属性。