Python - 局部变量已分配但从未使用 - var=None

Python - local variable is assigned but never used - var=None

为了尝试更好地格式化我的代码以避免在为不同 类 执行相同操作的多种方法中出现冗余,我遇到了以下问题:

# problematic method
def a(self, b, c):
    result = test(b)
    if (result):
        c = None # <- local variable c is assigned but never used
    return

# main code
obj.a(obj.b, obj.c)

并且 obj 的变量 c 从未设置为 None。

我正在尝试重新格式化的当前工作代码如下:

# working method
def a(self):
   result = test(self.b)
   if (result):
       self.c = None
   return

# main code
obj.a()

请参阅 Why can a function modify some arguments as perceived by the caller, but not others? 了解为什么在 a 中重新分配 c 不会更新 obj.c

如果你想将一个对象属性的引用传递给一个函数,你必须传递两个东西:

  1. 对象
  2. 属性的名称(即字符串)

然后您可以从函数内部dynamically set that attribute

def a(self, b, name_of_c):
    result = test(b)
    if result:
        setattr(self, name_of_c, None)

obj.a(obj.b, 'c')