class Parent:
def __init__(self):
self._lst = []
class Child(Parent):
def __init__(self):
super().__init__()
考虑上面的代码,假设我想在子类中实现一个方法,我可以使用self吗?_lst(这是一个在父类初始化的私有属性)为这个方法?换句话说,我是否可以访问通过子类在父类中初始化的私有属性?
在python中,真正的私有属性/方法不存在。只有命名约定。这意味着,如果属性/方法的名称以一个下划线开头,它仍然可以从任何地方访问,就像普通属性/方法一样。这样做的唯一作用是提醒您自己,并让其他开发人员知道该属性不能从外部访问。
回答你的问题,是的,你可以在函数中使用_lst。即使在具有真正访问修饰符的语言中,也经常会有不同的关键字来区分从任何地方都无法访问的属性与除了派生类之外任何地方都无法访问的属性。在python中,这通常用双下划线(__
)和单下划线(_
)表示。双下划线并不意味着可以从任何地方访问,而单下划线可以由派生类访问。查看更多信息