而对于以双下划线开头的Python类的属性(包括变量和方法),情况就有点不同了。
双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。...__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__weakref__', '_bar', 'foo']
以上是这个对象属性的列表...让我们来看看这个列表,并寻找我们的原始变量名称foo,_bar和__baz – 我保证你会注意到一些有趣的变化。
self.foo变量在属性列表中显示为未修改为foo。
self....当你在该列表中搜索__baz时,你会看不到有这个名字的变量。
__baz出什么情况了?
如果你仔细观察,你会看到此对象上有一个名为_Test__baz的属性。...事实证明,这个对象甚至没有__baz属性:
dir(t2)
['_ExtendedTest__baz', '_Test__baz', '__class__', '__delattr__',
'_