我一直在论坛里寻找答案,而我发现的最相似的是:Python: How to call class method from imported module? “Self” argument issue。但它并没有解决我的问题。
我有2个脚本:1- X和2-Y。我需要将一些def()从Y导入到X,这里是我导入和实例化的代码:
X脚本 - 我有一个名为txtCorpus
的变量,这是我打算操作的变量
import Y
from Y import PreProcessing
txtCorpus
def status_processing(txtCorpus):
instance = PreProcessing() #Here is where to instantiate the class contained within the Y script and where it has some defs that I need
myCorpus = instance.initial_processing(txtCorpus)
#After some other lines of operation ...
if __name__ == "__main__":
status_processing(txtCorpus)
现在是脚本Y
class PreProcessing():
@property
def text(self):
return self.__text
@text.setter
def text(self, text):
self.__text = text
tokens = None
def initial_processing(self):
#Operations
当我执行它的方式时,会显示以下错误:
TypeError: initial_processing() takes exactly 1 argument (2 given)
当我执行此操作myCorpus = instance.initial_processing()
时,会显示以下错误:
AttributeError: PreProcessing instance has no attribute '_PreProcessing__text'
当我将txtCorpus
作为参数传递时,我必须实例化代码的方式是什么?
答案 0 :(得分:0)
您没有提供完整的示例,但您在此处看到的错误TypeError: initial_processing() takes exactly 1 argument (2 given)
是因为您定义了initial_processing
:
def initial_processing(self):
只需要1个参数(类实例)。然后,您传递两个参数(instance
和txtCorpus
):
myCorpus = instance.initial_processing(txtCorpus)
想想这样的类方法:
instance.initial_processing(txtCorpus)
# equivalent to
initial_processing(instance, txtCorpus)
所以你传递了2个参数,但只定义了要处理的方法1.因此,你需要定义它来获取两个参数:
def initial_processing(self, txt):
# code here
答案 1 :(得分:0)
看起来问题是你的功能不是你认为的类的一部分。你应该缩进它,使它成为类的一部分,并为它接受一个参数(txtCorpus)。
class PreProcessing():
def __init__(self):
self.__text = None
@property
def text(self):
return self.__text
@text.setter
def text(self, text):
self.__text = text
tokens = None # Not sure what this is for...?
def initial_processing(self, txt):
#Operations
答案 2 :(得分:0)
错误是在定义时需要输入2个参数,一个用于self,一个用于txtCorput
def initial_processing(self, txt):
# Operations
Y档案:
class PreProcessing():
@property
def text(self):
return self.__text
@text.setter
def text(self, text):
self.__text = text
tokens = None
def initial_processing(self, corpus):
# Operations
您的X脚本没有任何问题(除了您导入的是Yclass而不是PreProcessing ^^)