【问题标题】:Importing Classes & Variables in Python 2.7在 Python 2.7 中导入类和变量
【发布时间】:2015-11-03 04:06:25
【问题描述】:

您好,我在将类和变量从其他 python 文件导入 python 文件时遇到问题。功能正常。

作为测试,我用一个函数、一个类、一个分配的类实例和一个随机变量来设置 file1。然后我在file2中使用了各种方法:

1。 导入文件1

2。 从文件 1 导入 * 错误:'名称未定义'

3。 从 file1 导入变量、类、实例等 错误:无法导入名称类

4+。然后做一些其他的事情... 创建 init.py 文件

或者然后尝试设置目录:

导入操作系统 os.chdir("/Users/mardersteina/Documents")

不知道我做错了什么。函数导入很好,但无论我在查找什么,都无法通过类和变量来解决这个问题。

无题7:

def happy():
    print "yo!"

class Tap(object):
    def __init__(self,level):
        self.level = level

level4 = Tap(4)

x = 14

无题9:

    %run "/Users/mardersteina/Documents/Untitled9.py"
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/Users/mardersteina/Documents/Untitled9.py in <module>()
      1 import Untitled7
      2 
----> 3 print Untitled7.x
      4 """
      5 from Untitled7 import Tap

AttributeError: 'module' object has no attribute 'x' 



%run "/Users/mardersteina/Documents/Untitled9.py"
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/Users/mardersteina/Documents/Untitled9.py in <module>()
      4 print Untitled7.x
      5 """
----> 6 from Untitled7 import Tap
      7 
      8 print Tap(4).level

ImportError: cannot import name Tap 

%run "/Users/mardersteina/Documents/Untitled9.py"
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/Users/mardersteina/Documents/Untitled9.py in <module>()
     11 from Untitled7 import *
     12 
---> 13 print level4.level

NameError: name 'level4' is not defined 

【问题讨论】:

  • 请显示不适合您的代码。显示 file1 中的类示例,以及如何尝试在 file2 中使用它。连同您看到的任何错误消息。可以从其他模块(文件)导入类和变量,效果很好。
  • 在您的untitled7 中,缩进是否​​正确?类/变量x 在函数内部没有缩进是吗?尝试做print(Untitled7.__file__) 检查它是否是同一个文件。
  • 缩进是正确的。 x 没有缩进。并且 print(Untitled7.__file__) 给了我正确的文件位置。
  • 另外,当你在运行Untitled9.py时,会不会是你之前在同一个控制台中导入了它,而它只有这个功能?

标签: python file class python-2.7 python-import


【解决方案1】:

我可以看到您正在从打开的控制台运行该文件。

问题很可能是您之前导入了Untitled7.py,而它只有一个功能。当您这样做时,Python 会将模块缓存在 sys.modules 中。

因此,如果您再次尝试在同一会话中导入它,您将从 sys.modules 获得缓存版本,这就是您在导入一次后对 Untitled7 所做的任何更改都不可见的原因。

要解决此问题,您可以reload 模块-

在 Python 3.x 中,使用 importlib.reload() 重新加载模块(以接受新的更改),示例 -

import importlib
importlib.reload(Untitled7)

在 Python 2.x 中,使用 reload() 方法 -

reload(Untitled7)

或者您也可以关闭 python 终端并重新打开它,它应该可以解决问题。

【讨论】:

  • 谢谢!我最初确实只用函数导入了它,所以这就是答案。
  • 如果答案有帮助,我建议您接受答案,点击答案左侧的勾号,这将对社区有所帮助。
  • 很高兴我能提供帮助。
猜你喜欢
  • 2014-01-08
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 2016-08-15
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多