首页 > 解决方案 > 我是否应该每次在 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每次都使用,可能更具可读性。它使您不必向右滚动即可阅读整行。我还认为它可以更快地判断哪些变量正在传递给外部函数。但我也可以看到使用第一个示例可能会更清晰的情况。

因此,如果这两个示例都做完全相同的事情,那么其中一个更正确吗?

标签: pythonpython-3.x

解决方案


就我个人而言,我会尽快使用 self 变体。原因是可维护性。init 函数的参数仅用于提供构造函数。

假设将来您不想再直接使用 var b 调用 outside_function,因为您的类已经过调整,并且 var b 现在拆分为 var e 和 var f。在内部,您仍然可以重新创建 self.b 并且您不必更改任何外部函数调用。


推荐阅读