将类实例变量分配给Python

时间:2017-05-26 11:40:58

标签: python python-3.x oop

可以将类实例变量分配给方法中的局部变量,例如:

class Foo(object):
    def __init__(self):
        self.bar = 'bar'

    def baz(self):
        # assign instance variable to local variable with a method
        bar = self.bar

        # do work with local variable
        bar = "qux"

        # update value of instance variable
        self.bar = bar
        return self

通过这样做,可以在bar的范围内引用self.bar而不是Foo.baz()

这样做是错误的,还是Unpythonic?

1 个答案:

答案 0 :(得分:2)

这样做非常好。你可能会说你不需要这样做(至少在你的例子中,如果不使用局部变量,你可以将方法减少到两行),但是没有真的有任何问题。

某些影响可能最终会使一种或另一种方式更为可取:

  • 创建局部变量显然会创建另一个局部变量
  • 为此设置临时局部变量需要更多代码,从而增加了方法的整体复杂性
  • 访问本地变量更快比访问实例属性
  • 只有一个点更新实例属性会使方法更接近原子性(虽然它不是纯粹的原子)并且避免了属性上的中间值
  • 同样,如果访问或修改self.bar有副作用,那么只做一次可能比多次触发它们更合适

所有这些效果通常都是极小的,根本不重要。然而他们在那里,可能只是他们可能与你相关。在那之前,只需使用你最熟悉的东西。