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()
为什么 print test.getvalue() 返回 1?
请您参考如下方法:
在 Python 中,Foo 类的私有(private)成员 __bar 将为 automatically renamed到_Foo__bar,所以Test1中的__test是_Test1__test,Test2中的是_Test2__测试。这两个成员实际上是不同的。这是设计,到"avoid name clashes of names with names defined by subclasses" .
如果您希望子类看到该变量,同时又不想让它成为公共(public)接口(interface)的一部分,请使用单个下划线 _test。
