Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:从不同目录中的脚本调用类并获取函数_Python_Class_Path_Sys - Fatal编程技术网

python:从不同目录中的脚本调用类并获取函数

python:从不同目录中的脚本调用类并获取函数,python,class,path,sys,Python,Class,Path,Sys,我目前正在编写一个脚本,名为exp1.py,它位于 /project/exp1.py 在这个脚本中,我试图调用一个名为computelikelihood()的函数,该函数位于另一个目录中的类class()中,该类位于scriptmethod.py中: /project/methods/c_CLASS/method.py 因此,在我的exp1.py中的代码中,我执行以下操作: import sys sys.path.append('/project/methods/c_CLASS/')

我目前正在编写一个脚本,名为exp1.py,它位于

/project/exp1.py 
在这个脚本中,我试图调用一个名为computelikelihood()的函数,该函数位于另一个目录中的类class()中,该类位于scriptmethod.py中:

 /project/methods/c_CLASS/method.py
因此,在我的exp1.py中的代码中,我执行以下操作:

import sys

sys.path.append('/project/methods/c_CLASS/')
这会让我找到method.py所在的文件夹,但是当我想从method.py调用
类()
时,我得到了我真正想要的函数computelikelihood(),我得到了错误。我试试这个:

from method import Class
from Class import computelikelihood
但是我得到了ImportError:没有名为Class的模块。有人能帮忙吗

编辑 这就是我的
\uuuuuu init\uuuuuu
的样子:

class Class:
    def __init__(self,e2wl,w2el,label_set):
        self.e2wl = e2wl
        self.w2el = w2el
        self.workers = self.w2el.keys()
        self.examples = self.e2wl.keys()
        self.label_set = label_set

因为您试图使用来自类的方法,所以应该通过类来实现。不要单独导入函数,因为它不打算这样使用:

来自方法导入类
Class.computelikelihood()类
但是,只有当
computelikelihood
是静态/类方法时,这才有效:

类:
@类方法
def计算环境(cls):
...
#或
@静力学方法
def computelikelikhood():
...
如果是实例方法:

类:
def计算能力(自我):
...
您需要首先实例化类
class
的对象:

来自方法导入类
classObject=Class()
classObject.computelikelihood()

仅从方法.Class导入computelikelihood您不能“从类导入函数”。如果
computelikelihood
是一个静态/类方法,您可以从
Class
调用它,例如
Class.computelikelihood(…)
。如果它是一个方法,你需要先实例化一个
。@Brian不确定你的意思。你能说得更具体些吗
computelikelihood
只是一个函数,但我不明白你所说的“静态/类方法”或“方法”是什么意思。或者也可以先实例化
。或者如何在我的
exp1.py
脚本中使用
Class.compputelikelihood()
。@joasa您似乎不熟悉Python中类的工作方式。你可能会发现这个官员很有帮助。如果
computelikelihood
只是一个函数,那么您根本不需要引用
Class
。@joasa不要误会,但是如果您不知道这些东西的含义,那么为什么要从类开始呢?这些都是理解类的基本概念。你的文章对函数、方法、静态方法和类方法之间的区别做了相当模糊的区分,因为你没有包含这些区别的语法。我建议编辑以帮助澄清这一点。谢谢,这解决了我的错误!但是,我编辑了我的问题,这样您就可以看到我的
采用了哪些参数,因为现在我有一个错误
classObject=GLAD()TypeError:\uuu init\uuuu()正好采用了4个参数(给定1个)
。调用类时,如何在exp1.py文件中定义这些参数?
def computelikelihood(cls):
不是静态/类方法。它仍然是您定义的一个实例方法。@joasa这是一个完全不同的问题。在任何情况下,都需要提供该类所需的任何参数。你可能已经编写了这个类,所以你会知道。@juanpa.arrivillaga我不认为这是一个完全不同的问题,因为我的问题是如何从不同目录中的脚本调用类并获得我想要的函数。因此,我试图使用与
\uuuu init\uuuu
中相同的参数来调用该类,但我需要定义它们,因此我不确定如何执行该操作。