2017-08-25 69 views
0

我正在python中制作一个游戏,并且pygame中的一个对象需要在屏幕上绘制任何东西。这个对象需要在我的所有类中的单独文件中引用。现在,所有类的每个__init__()方法都要求将表面对象手动添加到参数中。它变得乏味,使代码变得混乱,有没有更好的方式来在不同文件中的类之间共享一个特定的对象?如何自动将变量传递给类__init__方法?

+2

你能提供一些示例代码吗? – blacksite

+0

“显式优于隐式”(根据'import this')。 – martineau

回答

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 
0

有几种方法可以做到这一点,最天真的可能是一个全球性的对象。尽管如此,处理它的最好方法还是通过在您导入的模块中放置显示界面(以及在项目中广泛使用的其他任何东西)。用一个文件__init__.py制作一个新的文件夹'Screen'。

在__init__.py

把下面:

screen = screenObject() 

然后在任何文件,你需要的画面对象你可以:

from Screen import screen 

然后只需使用屏幕作为对象,无论你需要它。 python中的模块在第一次加载和共享时运行,所以无论你在哪里使用它,这个屏幕对象都是相同的。