Bdf*_*dfy 1 python
class Test1: def __init__( self ): self.__test = 1 def getvalue( self ): return self.__test class Test2( Test1 ): def __init__( self ): Test1.__init__( self ) self.__test = 2 test = Test2()
为什么打印test.getvalue()返回1?
ken*_*ytm 9
在Python中,私有成员__bar类Foo将被自动重命名到_Foo__bar,所以__test在Test1是_Test1__test和在Test2是_Test2__test.这两个成员实际上是不同的.这是设计用于"避免使用由子类定义的名称的名称冲突".
__bar
Foo
_Foo__bar
__test
Test1
_Test1__test
Test2
_Test2__test
_test如果希望子类看到变量,同时仍希望它不是公共接口的一部分,请使用单个下划线.
_test
Sve*_*ach 6
此行为是由于名称以名称开头的属性名称开头的__.基本上,__test会被_Test1__test内部Test1和_Test2__test内部损坏Test2,因此它们是两个不同的属性.
__
归档时间:
14 年,11 月 前
查看次数:
925 次
最近记录:
14 年,6 月 前