"self" 引用是否应该用于 类 内 for 循环中的迭代变量?

Should the "self" reference be used for iteration variables in for loops inside classes?

标题几乎包含了我的全部问题。例如,

class Test():
    def foobar(self, my_list):
        for element in my_list:
            do_something()

class Test():
    def foobar(self, my_list):
        for self.element in my_list:
            do_something()

关于变量 elementself.element,两者到底有什么区别?

我认为我的困惑来自于 my_list 被传递给方法的事实,所以它不是 Test 的实例,因此 self 是不合适的,因为 element指的是my_list的一个元素。但是变量 element 是在 Test 中创建的,所以每个 Test 实例都会有自己的 element.

答案通常是“否”。 for 循环正在分配变量以指向列表中的每个元素。完成后,它会在 for 循环之外持续存在。更好的方法是保留 element 一个局部变量,它会在方法结束时消失。但是如果你把它赋值给self.element,循环结束时就相当于self.element = my_list[-1]。然后它将在该方法存在时持续存在,并且可以从 class 实例的其他方法和持有者访问。这通常不是你想要的。