如何在 Python 类 中表示受保护的方法?

How to represent protected methods in Python classes?

阅读this question on method ordering,我想到了将受保护的方法放在哪里以及它们应该是私有的_method(self)还是publicmethod(self)在Python中。我知道 Python 没有为受保护的方法提供语言功能。

在 Python 中定义受保护方法的首选方法是什么?

只需使用以单个下划线开头的名称。

受保护的方法是要与子class共享的实现细节,因此此类方法不属于publicAPI。不属于 public API 的任何内容最好使用首字母下划线命名。

换句话说,'protected' 应该和 'private' 一样对待。受保护的方法只需要存在于具有严格隐私模型的语言中,在这种语言中,将此类实现细节设为私有将阻止与 subclasses 共享此类方法。 Python没有这个问题。

无论你做什么,不要使用前导下划线;这些名称被认为是 class private 并被命名为定义它们的 class (它们由编译器通过在前面加上前缀 _ClassName 来重命名) , 以确保 subclasses 不会意外覆盖它们。