我正在使用python制作一个游戏,并且需要在游戏中使用pygame中的对象来向屏幕绘制任何内容。需要在单独的文件中的所有类中引用此对象。现在,所有类的每个__init__()
方法都需要在参数中手动添加表面对象。它变得乏味并且使代码变得更加混乱,是否有更好的方法在不同文件中的类之间共享特定对象?
答案 0 :(得分:0)
一种简单的方法是使用class属性并提供一个类方法来设置它。
class Class:
surface = None
@classmethod
def set_surface(cls, surface):
cls.surface = surface
def __init__(self, arg1, arg2, arg3):
print('surface: {}'.format(self.surface))
c1 = Class(1, 2, 3) # -> surface: None
Class.set_surface(42)
c2 = Class(1, 2, 3) # -> surface: 42
答案 1 :(得分:0)
有几种方法可以做到这一点,最天真的可能是一个全球性的对象。可能最好的处理方法是在导入的模块中显示表面(以及项目中广泛使用的任何其他内容)。制作一个新文件夹' Screen'其中包含__init__.py文件。
__init__.py中的表示如下:
screen = screenObject()
然后在任何文件中你都需要屏幕对象:
from Screen import screen
然后只需将屏幕用作您的对象,无论您需要它。 python中的模块在第一次加载和共享时运行,因此无论您在何处使用它,该屏幕对象都是相同的。