var_doesHave = True
class A:
global var_doesHave
var_doesHave = False
# Call Class B
class B:
if (var_doesHave):
# do foo
else:
# do bar
我有python luigi管道代码,看起来像这样。当我检查终端时,似乎程序调用了类A并设置了doesHave = false,但在它运行B类之前,doHave恢复为true。
基本上,我想做' bar'但是它一直在做' foo'因为全局变量不断恢复为真。
有人可以解释为什么会这样吗?我几乎可以肯定这与Luigi Pipeline有关,而不是Python本身。
答案 0 :(得分:0)
您未正确使用python 。在内部类中,如果要在初始化实例时(例如,当您调用__init__
时)或A()
方法运行某些代码,则应使用方法,特别是__call__
方法在调用类时运行代码。
所以修复你的代码:
var_doesHave = True
class B:
def __init__(self):
if (var_doesHave):
print("foo")
else:
print("bar")
class A:
def __init__(self):
global var_doesHave
var_doesHave = False
B()
A()
另请注意,您的代码没有正确缩进。