Python PEP 8 style guide针对方法名称中的单个前划线提供了以下指导:
_single_leading_underscore:“内部使用”指标较弱。例如。从M import *不会导入名称以下划线开头的对象。
什么是“内部使用”? 这是仅在给定类中调用的方法吗?
MyClass:
def _internal_method(self):
# do_something
def public_method(self):
self._internal_method()
继承的方法如何-它们仍然被认为是“内部”的吗?
Baseclass:
def _internal_method(self):
# do something
MyClass(Baseclass):
def public_method(self):
self._internal_method() # or super()._internal_method()
如果继承来自软件包中的另一个模块怎么办?
file1.py
Baseclass:
def _internal_method(self):
# do something
file2.py
from file1 import Baseclass
MyClass(Baseclass):
def public_method(self):
self._internal_method() # or super()._internal_method()
所有这些示例在技术上都不错,但是在样式上它们都可以接受吗?您在什么时候说下划线不是必需的/无益的?