【问题标题】:Import Previously Initialized Object (Python)导入先前初​​始化的对象 (Python)
【发布时间】:2017-11-24 15:06:43
【问题描述】:

我正在创建我的第一个 python 包。

__init__.py 中,我从一个模块导入并打开一个对象App

from app import App
app = App()

app.py:

class App(tk.Tk):

    def __init__(self):
        #Create App
        tk.Tk.__init__(self)
        self.geometry("1000x550")
        self.title("Game")
        self.container = tk.Frame(self).grid()

然后,在另一个模块game.py中,我需要访问app__init__.py中初始化时创建的appapp.container

我试过了:

from app import App
# Does not retrieve variables

from __init__ import app
# Does not retrieve object

from app import App
app = App()
# Intialized the object twice

【问题讨论】:

  • “不检索变量”是什么意思?另外,为什么要在__init__ 中创建App 的实例?这不是你通常做事的方式。
  • @BryanOakley 如果我尝试调用App.container,则会出错,它不存在。这也是我的第一个包,所以不熟悉正常的方式
  • App.container 不存在,因为它是实例变量,而不是类变量。要访问container,您必须执行App().container

标签: python class tkinter


【解决方案1】:

您不应该在您的__init__.py 文件中创建App 的实例。一个包应该只提供对象的定义。当然也有例外,但刚开始时你不应该这样做。

你的__init__.py 文件应该只有这个:

from app import App

假设它位于一个名为“mypackage”的文件夹中,在任何需要应用程序的地方,您都会这样做:

from mypackage import App
app = App()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多