自定义 python 包中的对象范围
Scope of object in custom python package
我正在尝试制作 2d 图形包。我已经做了很多尝试来为此寻找最佳结构,但我无法让它很好地工作。这是当前不工作的设置:
我有文件
init.py
、scene.py
和 polygon.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
我正在尝试制作 2d 图形包。我已经做了很多尝试来为此寻找最佳结构,但我无法让它很好地工作。这是当前不工作的设置:
我有文件
init.py
、scene.py
和 polygon.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