Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OOP时未找到Python全局变量_Python_Oop - Fatal编程技术网

使用OOP时未找到Python全局变量

使用OOP时未找到Python全局变量,python,oop,Python,Oop,现在我遇到了定义的全局变量的问题,但是当运行class对象时,它会引发“未定义变量”的错误 具体来说, 我创建了一个名为\uuuu init\uuu.py的文件,其中包含全局变量 创建类\u 0.py,包含使用中定义的变量的函数 创建class_1.py,以组合在class_0.py \uuuu init\uuuuu.py asset = {'abc': 123, ...} cost = {...} from __init__ import * class defc(): def fu

现在我遇到了定义的全局变量的问题,但是当运行class对象时,它会引发“未定义变量”的错误

具体来说,

  • 我创建了一个名为
    \uuuu init\uuu.py
    的文件,其中包含全局变量
  • 创建
    类\u 0.py
    ,包含使用
    中定义的变量的函数
  • 创建
    class_1.py
    ,以组合在
    class_0.py
  • \uuuu init\uuuuu.py

    asset = {'abc': 123, ...}
    cost = {...}
    
    from __init__ import *
    class defc():
        def function(self):
            a = asset['abc']
            return ...
    
    from __init__ import *
    from class_0 import *
    class run_main():
        def __init__(self):
           self.defc = defc()
        def run(self):
           self.defc.function()
    
    class_0.py

    asset = {'abc': 123, ...}
    cost = {...}
    
    from __init__ import *
    class defc():
        def function(self):
            a = asset['abc']
            return ...
    
    from __init__ import *
    from class_0 import *
    class run_main():
        def __init__(self):
           self.defc = defc()
        def run(self):
           self.defc.function()
    
    class_1.py

    asset = {'abc': 123, ...}
    cost = {...}
    
    from __init__ import *
    class defc():
        def function(self):
            a = asset['abc']
            return ...
    
    from __init__ import *
    from class_0 import *
    class run_main():
        def __init__(self):
           self.defc = defc()
        def run(self):
           self.defc.function()
    
    然后它会引发错误

    NameError:未定义名称“资产”


    那么如何解决这个问题呢?
    asset
    变量是一个很长的字典,我不想把它放在一个特定的
    类中,因为还有其他
    类可以使用它。

    保存所有的工作并尝试重新启动内核。

    你应该知道
    \u init\u.py
    在python 3.3中不再需要+@如何解决我的问题?@ShanN You解决方案对我很有效。你使用的是最新版本的Python 3吗?或者如果你使用的是
    jupyter
    请尝试重置笔记本。根据你的文件布局,你可能需要通过预加一个点(例如
    from.\uu init\uuu导入…
    )来明确导入是本地的。此外,最好使用一些其他模块,如
    constants.py
    ,而不是
    \uuuuu init\uuuuuu.py
    ,尽管这不会改变语义。