类和私有变量

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中,私有成员__barFoo将被自动重命名_Foo__bar,所以__testTest1_Test1__test和在Test2_Test2__test.这两个成员实际上是不同的.这是设计用于"避免使用由子类定义的名称的名称冲突".

_test如果希望子类看到变量,同时仍希望它不是公共接口的一部分,请使用单个下划线.


Sve*_*ach 6

此行为是由于名称以名称开头的属性名称开头的__.基本上,__test会被_Test1__test内部Test1_Test2__test内部损坏Test2,因此它们是两个不同的属性.