在类中使用自变量比传递变量更好吗?

dsp*_*pjm 5 python

我曾经是 ac 程序员,所以我们必须将每个变量作为参数或指针传递,而不鼓励定义全局变量。

我将在 python 的几个函数中使用一些变量。

一般来说,哪个更好,将变量作为参数传递,还是在我们获取变量的值时定义一个自变量?python对此有什么一般规则吗?

像这样:

class A:
    def func2(self, var):
        print var

    def func1(self):
        var = 1
        self.func2(var)

class B:
    def func2(self):
        print self.var

    def func1(self):
        self.var = 1
        self.func2()
Run Code Online (Sandbox Code Playgroud)

哪个更好?甲还是乙?

Mik*_*ell 3

在Python中,你有很大的自由去做“有意义”的事情。在这种情况下,我想说这取决于您计划如何使用func2以及谁将访问它。如果func2只应该对 采取行动self.var,那么您应该这样编码。如果其他对象需要将不同的参数传递给func2,那么您应该允许它作为一个参数。当然,这一切都取决于您想要做的事情的更大范围,但考虑到您的简单示例,这是有道理的。

另外,我对你的问题与全局变量的关系感到困惑。成员变量与全局变量不同。

编辑以反映更新后的帖子:

在您的示例中,A 和 B 之间的区别在于 B 保留了有关 的信息self.var,而 A 则没有。如果var需要作为对象状态的一部分进行持久化,那么您需要将其存储为self. 我觉得你的问题可能更多地与作为一般概念的对象相关,而不是与 Python 特定的任何问题相关。