自定义 python 包中的对象范围

Scope of object in custom python package

我正在尝试制作 2d 图形包。我已经做了很多尝试来为此寻找最佳结构,但我无法让它很好地工作。这是当前不工作的设置:

我有文件 init.pyscene.pypolygon.py

scene.py 应该初始化一个对象,这个对象有一个数组,多边形应该存储在这个数组中。这个文件的一个简单版本如下所示:

class make_scene:
    def __init__(self,width,height,**kwargs):
        self.width = width
        self.height = height
        self.color = kwargs.get('color', '#ffffff')
        self.draw_elements = []

#init scene:
the_scene = make_scene(500, 250) 

polygon.py 定义了一些要绘制的对象(圆形、立方体等):

class cube:
    def __init__(self,x,y,**kwargs):
        self.x = x
        self.y = y
        self.color = kwargs.get('color', '#000000') 
        the_scene.append(self)

init.py 只导入模块和一些辅助包:

from .scene import *
from .polygon import *

但是,如果我尝试使用这个包,scene_file 的范围不正确:

cube(0,0,10,10)
>>> NameError: name 'the_scene' is not defined

我一直被多种不同的架构所困扰。如果我将它保存在一个看起来不太理想的文件中,我可以让它工作。

有解决此问题或尝试不同架构的想法吗?我会喜欢你的意见。

问题似乎是您的 polygon.py 文件不知道 the_scene 对象。 Python 不会 link 像你的 init.py.

一样将两者放在一个共同的文件中

尝试从 polygon.py 文件中导入 the_scene 函数,例如

from .polygon import the_scene