将“self”本地绑定到实例方法中的另一个变量可以接受?

时间:2016-08-15 13:15:40

标签: python python-2.7 python-3.x

根据最佳实践标准,将实例方法中的 self 本地绑定到另一个变量是否可以接受?它派上用场,特别是在测试方法时。我还想知道如果在循环中检索实例属性,这种方法是否更有效。这是一个例子

class C:
    def __init__(self):
        self.a = "some attribute"

    def some_function(self):
        c = self
        for _ in range(10):
            print(c.a)

1 个答案:

答案 0 :(得分:3)

这通常没有任何好处,它实际上是反直觉的,因为它使读者对你的意图感到困惑(self可以说是Python中最容易识别的名字)。

执行此操作的唯一好处(尽管有点不同)是,如果要通过将属性分配给名称(noted as a performance tip in the Python Wiki)来消除self上的属性查找:

def some_function(self):
    # we assign 'self.a' to 'a'
    # to avoid looking for 'a' in 'self' for every iteration 
    a = self.a            
    for _ in range(10):
        print(a)    

只会在极小的程度上降低执行速度。除此之外,你真的没有像这样重命名self的好处。