dan*_*jar 1 python oop inheritance protected
阅读这个关于方法排序的问题,我思考了在Python中将受保护的方法放在哪里以及它们应该是私有的_method(self)还是公共的method(self)。我知道 Python 不提供受保护方法的语言功能。
私有:按照约定,以下划线开头的属性是私有的。通常仍然可以从外部访问它们,但不应该。用下划线开头的受保护方法感觉很奇怪,因为不清楚子类实际上重写了该方法而不是声明它自己的实现细节。
Public:没有下划线,更有可能有人会查看基类以查看该方法是否已经存在。因此,这对于子类化的人来说更好。然而,想要使用子类的人不知道该方法只是一个实现细节,可能会尝试从外部调用它。
在 Python 中定义受保护方法的首选方法是什么?
只需使用以下划线开头的名称。
受保护的方法是您希望与子类共享的实现细节,因此此类方法不是公共 API 的一部分。任何不属于公共 API 的内容最好以以下划线开头命名。
换句话说,“受保护”应该与“私有”一样对待。受保护的方法只需要存在于具有严格隐私模型的语言中,其中将此类实现细节设为私有将阻止与子类共享此类方法。Python不存在这样的问题。
无论你做什么,都不要使用前导双下划线;这些名称被认为是类私有的,并且被命名为定义它们的类(它们由编译器通过_ClassName在前面添加前缀来重命名),以确保子类不会意外覆盖它们。
| 归档时间: |
|
| 查看次数: |
3216 次 |
| 最近记录: |