我知道这个问题已经回答了很多次,但这些答案并不能完全解决我的问题。
在我的情况下,我需要在主程序导入的类中使用屏幕(以及level
等多个其他变量(
一个常见的答案是使用变量作为参数。这对我来说不起作用,因为我不想每次上课都传递5+个参数。
另一个答案是使用from main import *
。这不太好用,因为有些变量是在导入类之后创建的。
有解决办法吗?
编辑:这就是我的程序的结构:
main.py
:
import module
screenX = 1000
screenY = 500
...
player = module.Player()
module.py
:
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
import module
settings = {
"foo": "bar",
# ...
}
player = module.Player(settings)
player.print_foo()
settings["foo"] = "baz"
player.print_foo()
module.py
class Player:
def __init__(self, settings):
self.settings = settings
def print_foo(self):
print(self.settings["foo"])