【发布时间】:2014-04-11 23:33:28
【问题描述】:
我一直在进行一些测试以了解导入的工作原理:
文件1:
class Player():
hp=0
def __init__(self):
self.hp=0
zim = Player()
zim.hp = 5
文件2:
import test1
print(test1.zim.hp)
我运行 file2: 并得到 5 的输出。(胜利的波浪旗)
太好了,那我把file1改成这样:
def Test():
class Player():
hp=0
def __init__(self):
self.hp=0
zim = Player()
zim.hp = 5
我一直在尝试修改 file2 中的代码以获得 5 的输出,但它失败了。有没有办法导入一个函数,然后是实例特定的数据(在这个例子中是 hp)?我知道'return',但想知道是否有办法修改以下代码以直接导入我需要的实例。
ie: abc 会是……???哎哟
import test1
print(abc.test1.zim.hp)
~T
【问题讨论】:
-
导入
test1,test1是什么? -
为什么要修改 test1 文件以将所有内容都包装在 Test() 函数中?当它以前工作时,你试图通过这样做来实现什么?
-
没有
zim对象。除非您显式调用它,否则函数体甚至不会执行,当您这样做时,您仍然无法进入函数内部并拉出它的胆量,除非该函数显式使用return之类的东西使它们可用。 -
在您的第一个版本的 file1 中,两个
zim行在您的对象定义中。在您的第二个版本中,它们被定义为Test()函数的一部分,而不是对象。这可能是你的问题吗? -
我认为 file1 的原始版本没有正确写在这里 - 基于评论“我运行 file2:并得到 5.(胜利的波浪标志)的输出”,我认为file1 的最后 2 行 必须 在最外层范围内。
标签: python import importerror