Python OOO设计了多个类

时间:2012-10-03 16:11:28

标签: python

我有父母&一个子类,并尝试实例化子类以继承父类的属性。

这段代码工作得非常好但是想知道是否还有将self.list1保持私有状态;如果我声明self .__ list1那么子类无法访问它。

我可以覆盖子类方法以将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()

1 个答案:

答案 0 :(得分:5)

来自docs

  

从内部无法访问的私有“实例变量”   Python中不存在对象。但是,有一个惯例   接下来是大多数Python代码:一个以下划线为前缀的名称   (例如_spam)应被视为API的非公开部分   (无论是函数,方法还是数据成员)。它应该是   考虑了实施细节,如果没有改变   通知。

前缀两个下划线调用name mangling,由您的客户尊重这些变量/方法的“私密性”