2

我有父类和子类,并试图实例化子类以继承父类的属性。

这段代码运行得很好,但想知道是否有办法让 self.list1 保持私有,即;如果我声明 self.__list1 则子类无法访问它。

我可以重写 childclass 方法以将 self.__list1 保持为私有吗?

class parent(object):
    def __init__(self,x,y):
        self.x = x
        self.y = y
        self.list1 = ['a','b','c']
        print('self.x',self.x)
        print('self.y',self.y)

class child(parent):
    def test(self):
        print('In child self.x',self.x)
        print('In child self.list1',self.list1)

class test(object):
    def __init__(self,x1,y1):
        self.x1 = x1
        self.y1 = y1

    def process(self):
        childobj = child(self.x1,self.y1)
        childobj.test()

        pass


def main():            
    testx = test(2,3)
    testx.process()
4

1 回答 1

5

文档

在 Python 中不存在只能从对象内部访问的“私有”实例变量。但是,大多数 Python 代码都遵循一个约定:前缀为下划线的名称(例如 _spam)应被视为 API 的非公共部分(无论是函数、方法还是数据成员) . 它应被视为实施细节,如有更改,恕不另行通知。

以两个下划线为前缀会调用名称修饰,这取决于您的客户尊重这些变量/方法的“隐私性”

于 2012-10-03T16:14:55.150 回答