【问题标题】:Not able to properly implement import for python file无法正确实现 python 文件的导入
【发布时间】:2018-02-02 03:35:39
【问题描述】:

我正在尝试将名为 storePass() 的类从 test2 导入到测试中

我已经做到了->

测试1->

import smtplib
from test2 import storePass

Gmail = storePass()
a = Gmail.returnPass()

测试2->

class storePass():
    Gmail_pass = "xcmsijw19021"
    def returnPass(self):
        return self.Gmail_pass

但是我收到以下错误 ->

TypeError: returnPass() takes 0 positional arguments but 1 was given

当我尝试编写如下代码时 ->

class storePass():
    Gmail_pass = "xcmsijw19021"
    def returnPass(self):
        return self.Gmail_pass

Gmail = storePass()
a = Gmail.returnPass()

我没有收到任何错误,我可以毫无问题地执行 print(a)。 所以我的导入肯定有问题!

编辑:test1 和 test2 都在同一个目录中!

【问题讨论】:

  • 您是否有一个陈旧的test2.pyc 文件,该文件是从早期版本的test2.py 创建的?您几乎肯定不会导入您认为的代码。一种判断方法是在test2.py 中更改returnPass 的名称,但不要更改test1.py 中的调用。如果您仍然遇到同样的错误,您就知道 test2.py 没有被使用,而 storePass 正在从其他地方导入。

标签: python python-3.x class import python-import


【解决方案1】:

我刚刚尝试运行您的代码,它可以在我的 python 2.7.6 解释器上运行。 我打印a,结果是xcmsijw19021

这是我使用的代码: file.py

import smtplib
from test2 import storePass
Gmail = storePass()
a = Gmail.returnPass()
print a

test2.py

class storePass():
    Gmail_pass = "xcmsijw19021"
    def returnPass(self):
        return self.Gmail_pass

然后我确实运行了python file.py,它正确地打印了我的输出。

我认为这可能是一些解释器/IDE 问题?

Python3 也可以使用 print(a)

【讨论】:

  • 据我所知,它不应该取决于任何此类因素!
【解决方案2】:

我尝试在 Ubuntu 16.04 python 2.7 上运行它,它按预期工作。确保您的两个文件位于同一文件夹中,或者 test2 路径位于 PYTHONPATH 中。

无论如何 F.Leone python 没有编译器,据我所知,它不依赖于特定的 IDE。

【讨论】:

  • 它们都在同一个文件中!否则我会收到关于导入非条件的错误:/!
  • Python一种编译语言;它只是不编译为本机代码。
  • 我写了同一个文件夹!没必要粗鲁!在你抨击之前阅读评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多