如何自动将变量传递给类__init__方法?

时间:2017-08-25 01:05:25

标签: python python-3.x class object

我正在使用python制作一个游戏,并且需要在游戏中使用pygame中的对象来向屏幕绘制任何内容。需要在单独的文件中的所有类中引用此对象。现在,所有类的每个__init__()方法都需要在参数中手动添加表面对象。它变得乏味并且使代码变得更加混乱,是否有更好的方法在不同文件中的类之间共享特定对象?

2 个答案:

答案 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中的模块在第一次加载和共享时运行,因此无论您在何处使用它,该屏幕对象都是相同的。