Skip to main content
 首页 » 编程设计

python之类和私有(private)变量

2025年05月04日11itcoder

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。