繁体   English   中英

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

[英]How to pass a variable to a class __init__ method automatically?

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

一种简单的方法是使用class属性并提供用于设置它的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

有几种方法可以做到这一点,最幼稚的可能是全局对象。 但是,可能最好的处理方法是在导入的模块中放置显示表面(以及项目中广泛使用的其他任何东西)。 创建一个新文件夹“ Screen”,其中包含文件__init__.py。

在__init__.py中放入以下内容:

screen = screenObject()

然后,在任何文件中,您需要屏幕对象即可:

from Screen import screen

然后,只需在需要的地方使用屏幕作为对象即可。 python中的模块在第一次加载和共享时运行,因此无论您在哪里使用该屏幕对象,它都是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM