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

时间:2018-11-02 10:37:31

标签: python instance-variables local-variables

为了更好地格式化我的代码以避免在针对不同类执行相同操作的多个方法中出现冗余,我面临以下问题:

# 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()

1 个答案:

答案 0 :(得分:1)

请参见Why can a function modify some arguments as perceived by the caller, but not others?来解释为什么在c中重新分配a不会更新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')