Python中有没有办法制作静态变量?

问题描述 投票:0回答:1

我不完全是菜鸟,但我也不是最好的 Python 开发人员。最近我一直在尝试制作一个程序,在main.py的全局范围内创建一个变量,main中的函数调用file2.foo(),file2导入main并编辑变量,然后main调用file3.bar (),其中 file3 导入相同的变量,它将使用 file2 中更新的数据执行操作

我知道这个问题可能没有真正的解决方案,我应该只使用 returns 来更新 main 中的 var ,但我希望你们中的一些人可能知道一种使其静态的方法,或者有一个更简单的解决方案通过引用传递

我正在尝试做的一个例子:

main.py:

import file2, file3
var = 0

if __name__ == '__main__':
    var = 3
    file2.foo()
    # var should now be 6
    file3.bar()
    # var should now be 7
    print(var)

file2.py:

import main

def foo():
    main.var += 3

file3.py:

import main

def bar():
main.var += 1

我知道导入文件会像类一样重新初始化它的变量,但我也知道如果类的所有实例都在同一个文件中,则 python 类可以具有静态变量。 我尝试过使用第四个文件来存储

var = 0
并让其他三个文件导入它,并且我还尝试在第四个文件中设置一个类,如下所示: 第四个文件:

class a:
    static_var = 0
    def __init__(self) -> None:
        self.var = static_var

然后让所有其他文件执行

from file4 import a; global = a()
,然后使用
global.var += some_integer

访问它

我已经尝试查找此问题,但据我所知没有其他人遇到同样的问题。 任何帮助都是值得赞赏的,特别是如果它只是告诉我没有办法做到这一点。非常感谢!

python scope static python-import variable-assignment
1个回答
0
投票

并不是说我一定支持这种方法,但你可以通过将“静态变量”放入新文件中来实现你想要的:

# main.py
import file1, file2, file3                                                                              
                                                                                                        
                                                                                                        
if __name__ == '__main__':
    print("in main:", file1.var)                                                                             
    file2.foo()                                                                                         
    # var should now be 6                                                                               
    file3.bar()                                                                                         
    # var should now be 7                                                                               
    print("in main:", file1.var)
# file1.py
var = 0
#file2.py
import file1                                                                                            
                                                                                                        
                                                                                                        
def foo():                                                                                              
    file1.var = 6
# file3.py
import file1                                                                                            
                                                                                                        
                                                                                                        
def bar():                                                                                              
    file1.var += 1

阅读 Python 文档中的如何导入文件应该会让您受益匪浅:https://docs.python.org/3/reference/import.html

© www.soinside.com 2019 - 2024. All rights reserved.