【发布时间】:2021-10-07 15:34:29
【问题描述】:
我想知道在模块、类和方法中使用 _ 来编写 Python 代码更符合 Python 风格。
示例 1:
import threading as _threading
class Thread(_threading.Thread):
pass
对
from threading import Thread
class MyThread(Thread):
pass
在模块级别上,在这样的方法中引入私有变量是否有意义:
def my_module_method():
_throw = foo + bar
return _throw
对
def my_module_method():
throw = foo + bar
return throw
我是否正确假设私有名称的最佳用法是防止类的实例使用某些私有临时方法,例如:
class MyClass(object):
_my_internal = 0
def _do_not_use_me()
pass
以便该类的最终用户知道不要直接在以下位置使用这些方法:
foo = MyClass._do_not_use_me()
bar = MyClass._my_internal
非常感谢您对私人名称的一般用法提出任何其他建议。
【问题讨论】:
-
这可能是基于意见的,因此不适合 SO。但是恕我直言,您的假设是正确的。至于函数中的“私有”变量——这是没有意义的,因为无论如何它们都不能从外部访问。 “私人”导入也没有意义,因为它们只会在
import *中被忽略,这无论如何都是一种不好的做法。所以对我来说,只有类属性、对象属性、方法和(未导入的)类和函数应该是“私有的”。