繁体   English   中英

Python中的继承和私有属性

[英]Inheritance and Private attributes in Python

class Parent:
    def __init__(self):
        self._lst = []


class Child(Parent):
    def __init__(self):
        super().__init__()

考虑到上面的代码,假设我想在 Child 类中实现一个方法,我是否可以为这个方法使用 self._lst (这是在 Parent 类中初始化的私有属性)? 换句话说,是否允许我通过子类访问在父类中初始化的私有属性?

在 python 中,真正的私有属性/方法不存在 只有命名约定。 这意味着如果一个属性/方法的名称以一个下划线开头,它仍然可以从任何地方访问,就像常规属性/方法一样。 这样做的唯一作用是提醒您自己,并让其他开发人员知道此属性不应从外部访问。

要回答您的问题,是的,您可以在函数中使用 _lst。 即使在确实有真正的访问修饰符的语言中,也经常有不同的关键字来区分不能从任何地方访问的属性与那些不能被派生类访问的属性。 在 python 中,这通常用双下划线 ( __ ) 与单下划线 ( _ ) 来表示。 双下划线并不意味着可以从任何地方访问,而单下划线可以由派生类访问。 请参阅此处了解更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM