可能重复:
Python 中的私有名称修改有什么好处?
当我在玩python时,我发现如果class
或instance
变量名以2个下划线开头,它们将被重命名为以'_'开头。
例如
class Test(object):
__attribute = "dunderscored"
def __init__(self, value=0):
self.__instance_attribute = value
test_instance = Test()
然后两个变量都将重命名为
test_instance._Test__attribute
和test_instance._Test__instance_attribute
为什么会有这样的行为/特征?有什么需要,或者有任何特殊用途吗?
我可以想到一个用例,当不同的类具有一些具有通用名称的属性时,例如。value、id、member 是共同的,但对于某些函数/方法,我们只期望/假设这些类中的一个。在这种情况下,有可能没有进行类型检查,并且当另一个类实例传递给它时(可能是错误的)可能会导致错误和/或不良行为。
但除了这个用例之外,我看不到这种特殊行为的任何好处。这种行为看起来像是一个功能,非常基本的功能,我觉得我在这里遗漏了一些东西。如果它是一个功能,它有什么用?任何典型的用例?