python - 我是否应该每次在 Python 类中使用变量的“自我”版本
问题描述
这更多的是关于self
在 Python 中使用的最佳实践或最佳风格技巧的问题,而不是如何使用它。基本上我的问题是,我应该尽快使用我的变量的“自我”版本,然后每次都使用,还是有时使用“非自我”版本是否合适。
这是我尽快使用变量的“自我”版本的示例:
def outside_function1(var1, var2):
"""Does something"""
def outside_function2(var1, var2):
"""Does something else"""
class MyClass1:
def __init__(self, a, b, c, d):
self.a = a
self.b = b
self.c = c
self.d = d
self.variable_to_calculate = outside_function1(self.a, self.b, self.c) + outside_fuction2(self.a, self.b, self.d)
这是一个不同的示例,我不在同一个 init 函数中使用变量的“self”版本:
class MyClass2:
def __init__(self, a, b, c, d):
self.a = a
self.b = b
self.c = c
self.d = d
self.variable_to_calculate = outside_function1(a, b, c) + outside_fuction2(a, b, d)
万一你没有抓住它,区别就在self.variable_to_calculate
.
我的想法是第二个例子,我不self
每次都使用,可能更具可读性。它使您不必向右滚动即可阅读整行。我还认为它可以更快地判断哪些变量正在传递给外部函数。但我也可以看到使用第一个示例可能会更清晰的情况。
因此,如果这两个示例都做完全相同的事情,那么其中一个更正确吗?
解决方案
就我个人而言,我会尽快使用 self 变体。原因是可维护性。init 函数的参数仅用于提供构造函数。
假设将来您不想再直接使用 var b 调用 outside_function,因为您的类已经过调整,并且 var b 现在拆分为 var e 和 var f。在内部,您仍然可以重新创建 self.b 并且您不必更改任何外部函数调用。
推荐阅读
- reactjs - 为 create-react-app 添加/覆盖 Webpack 加载器?
- mongodb - 如何让 Geoserver 使用 MongoDB-Geo-Index 进行热图转换?
- c - 获取对话框中dialog_menu的选择索引(libdialog)
- asp.net - Visual Studio (localdb) 的我的 SQL Server 未反映任何更改或更新
- java - 为什么我的 SOAP 客户端忽略 WSDL 位置的端口?
- c - 是否有任何标准方法可以在 FreeBSD 中以编程方式获取文件或目录的创建时间
- time-complexity - for循环是否必须在循环内有一个执行代码才能被视为o(n)?
- python - BeautifulSoup HTML 提取文本
- java - IntelliJ IDEA:将 IDE 构建/运行操作委托给 Maven:如何运行单个测试类/案例?
- java - 不是所有的对象都已经序列化了吗?