Python 如何从主程序导入的类中访问所有变量?

Python 如何从主程序导入的类中访问所有变量?,python,pygame,Python,Pygame,我知道这个问题已经被回答了很多次了,但是答案并不能完全解决我的问题 在我的例子中,我需要在一个由它导入的类中使用来自主程序的屏幕(以及多个其他变量,如level) 一个常见的答案是使用变量作为参数。这对我不起作用,因为我不想每次创建一个类时都传递5个以上的参数 另一个答案是使用主导入中的*。这不起作用,因为有些变量是在导入类之后创建的 有解决办法吗 编辑:这是我的程序的结构: main.py: import module screenX = 1000 screenY = 500 ... pl

我知道这个问题已经被回答了很多次了,但是答案并不能完全解决我的问题

在我的例子中,我需要在一个由它导入的类中使用来自主程序的屏幕(以及多个其他变量,如
level

一个常见的答案是使用变量作为参数。这对我不起作用,因为我不想每次创建一个类时都传递5个以上的参数

另一个答案是使用主导入中的
*
。这不起作用,因为有些变量是在导入类之后创建的

有解决办法吗

编辑:这是我的程序的结构:

main.py

import module

screenX = 1000
screenY = 500
...

player = module.Player()
class Player:
    def __init__(self):
        self.x = screenX
        self.y = screenY
        ...

    def go(self):
        self.x += 1
        if self.touchs(level):
            self.die()

    def touchs(self, object):
        ...

    def die(self):
        ...
module.py

import module

screenX = 1000
screenY = 500
...

player = module.Player()
class Player:
    def __init__(self):
        self.x = screenX
        self.y = screenY
        ...

    def go(self):
        self.x += 1
        if self.touchs(level):
            self.die()

    def touchs(self, object):
        ...

    def die(self):
        ...
我希望这有帮助

一个常见的答案是使用变量作为参数。这对我不起作用,因为我不想每次创建一个类时都传递5个以上的参数

我认为你低估了这种方法的灵活性。请看以下示例:

main.py

导入模块
设置={
“foo”:“bar”,
# ...
}
播放器=模块.播放器(设置)
player.print_foo()
设置[“foo”]=“baz”
player.print_foo()
module.py

职业玩家:
定义初始化(自我,设置):
self.settings=设置
def打印_foo(自我):
打印(自我设置[“foo”])

变量会随时间变化,但参数会保持不变。我还必须更改类中的参数,这样也不起作用。我用我的程序的粗略结构编辑了这篇文章。为什么你必须在你的主程序中有参数?你不能把它们放进一个公共模块吗?解决办法是传递5+个参数。您是否考虑过聚合它们,例如,您有一个对象
screen
,其中
screen.x=1000
screen.y=500
?您实际有多少个不同的参数?@finefoot完全正确。我有一个关卡编辑器,
Player
必须知道更改的关卡。@MisterMiyagi谢谢,我可以将screenX和screenY作为参数传递。然而,变量
级别
会随着时间的推移而改变,但参数不会改变。如果这样做有效,这是一个极好的解决方案!不过,我可能会使用@MrBean-breme的方法,因为它更简单,而且我可以在module.py中更改变量。