我有父母&一个子类,并尝试实例化子类以继承父类的属性。
这段代码工作得非常好但是想知道是否还有将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()
答案 0 :(得分:5)
来自docs:
从内部无法访问的私有“实例变量” Python中不存在对象。但是,有一个惯例 接下来是大多数Python代码:一个以下划线为前缀的名称 (例如_spam)应被视为API的非公开部分 (无论是函数,方法还是数据成员)。它应该是 考虑了实施细节,如果没有改变 通知。
前缀两个下划线调用name mangling,由您的客户尊重这些变量/方法的“私密性”