Python中的指针式行为

2024-05-09 04:33:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模块。一是网站的核心基础网页.py(我们把它命名为code.py),另一个是一个附加模块(addon.py)。使用网页.py,对于网站服务器的每个页面,核心中应该有类定义,如下所示:

class Page:  
    def GET(self):  
        variable = "Hello!"  
        return render.page_template(variable) #Here, it returns the rendered template to user  
    def POST(self):  
        post_variables = web.input()  
        pass #Doing something with those variables, maybe, writing in a database...  

现在我真的需要将类定义从code.py移到addon.py。我可以将类定义称为addon.Page,而不是简单的PagePage.GET函数仍然运行良好。。。但是POST有一个问题。似乎在每次调用POST函数时,核心模块中的web.input()都被设置为存储所有变量的存储对象。如果我的类定义存储在addon中,那么核心只需调用addon.Page.POST()(我认为没有办法改变这种行为)。POST()尝试获取web.input()。。。当然失败了-web没有导入到addon.py,即使导入了,也不会有任何值web.pyweb服务器正在获取-只是空字典,它只是模块的另一个实例。所以我不知道…
一种解决方案是:在addon.Page.POST()中放入某种函数。这个函数将向下一级,到code.py并在那里执行web.input(,然后将它返回给addon.py,某种访问父模块名称空间的方法(如执行import __main__和访问__main__.web.input()(我知道,这是不鼓励的))。
或者,例如,在模块之间放置某种类似C的指针,例如:
*在code.py中有一个定义,所有对code.addon.web_input()的调用都被路由到它代码.web.input()
*在addon.py-只需调用addon.web_input即可从code.web.input()获取信息

在这种情况下我该怎么办?将有多个加载项,每个加载项都存储了类定义,我应该能够添加新模块,轻松连接和断开现有模块,而无需修改code.py。我相信这在Python中是可能的。。。也许web.py源代码需要修改?你知道吗


Tags: 模块函数pyaddon服务器web网页核心
1条回答
网友
1楼 · 发布于 2024-05-09 04:33:36

我想我会把我的评论变成一个答案,因为它似乎解决了你的问题。你知道吗

导入的模块缓存在Python中。这意味着当您导入web(主网页.py模块)从多个其他模块中,它们都将获得相同的模块对象,具有相同的内容。你知道吗

所以,可能您需要做的就是import webaddon.py模块的顶部。你知道吗

相关问题 更多 >