为什么我无法从python中的类导入函数?

时间:2018-10-03 15:59:39

标签: python python-3.x

这是一个名为“ importable”的文件,我尝试在其中导入方法测试功能。

class SoonImported:
   def __init__(self, x):
       self.x = x

   def methodTest(self):
       print(self.x)

在另一个文件中,我有这行代码无法更改(因为我的示例基于家庭作业)。

from importable import SoonImported, methodTest

当我尝试运行此脚本时,它给我一个导入错误,并说它“无法导入名称'methodtest'”。为了使它正常工作,我应该如何纠正即将导入的类?

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

似乎methodTest是在SoonImported内部定义的。因此,它将像这样from importable import SoonImported来解决,然后methodTest将被称为

instance = SoonImported()
instance.methodTest()

答案 1 :(得分:0)

没有类的其余部分就无法从类中导入方法,因为该方法仅存在于类的上下文中。想想进口就像借钱一样。您想向朋友借割草机。除了那里的东西,就像试图从朋友那里借割草机而不先与任何人交朋友。如果您没有任何朋友,您怎么能期望从任何人那里借用割草机?

答案 2 :(得分:0)

假设您的作业写得正确,似乎methodTest应该是SoonImported类的函数而不是方法。我猜在第二个文件中,您的行类似于以下内容:

SoonImported_object = SoonImported("Some Text")
methodTest(SoonImported_object)

如果是这种情况,那么methodTest不是方法,而是函数,应将其定义为以下内容;

class SoonImported:
    def __init__(self, x):
        self.x = x

def methodTest(SoonImported_object):
    print(SoonImported_object.x)

答案 3 :(得分:0)

只需导入类并像平常一样使用它

importable.py

class SoonImported:
    def __init__(self, x):
        self.x = x

    def method_test(self):
        print(self.x)

vash.py

from importable import SoonImported

a = SoonImported(1)
a.method_test()
python3.7 vash.py
1