全局变量恢复为Python Luigi Pipelin中的默认值

2024-05-02 21:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

var_doesHave = True

    class A:
         global var_doesHave
         var_doesHave = False

         # Call Class B

    class B:
         if (var_doesHave):
              # do foo
         else:
              # do bar

我有一个类似于这样的pythonluigi管道代码。当我检查终端时,程序似乎调用类A并设置doesHave=false,但在运行类B之前,doesHave恢复为true。在

基本上,我想做'bar',但是它一直在做'foo',因为全局变量一直在返回true。在

有人能解释一下为什么会这样吗?我几乎可以肯定这与Luigi管道有关,而不是Python本身。在


Tags: falsetrueif管道foovarbarcall
1条回答
网友
1楼 · 发布于 2024-05-02 21:28:42

您没有正确使用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()

还请注意,您的代码没有正确缩进。在

相关问题 更多 >