在另一个modu中使用python方法

2024-04-23 18:16:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用我试图调用的方法创建的类,尽管另一个python模块只包含一个main函数,它给我一个名为“unigueIDList is not defined”的错误。以下简称代码

第一个模块

class ClassObjects:
    def __init__(self, unigueIDList, nameList, priceList):
        self.ID = unigueIDList
        self.name = nameList
        self.price= priceList

    def uniqueId(self, list):
        unigueIDList= []
        [unigueIDList.append(item) for item in list 
        if item not in unigueIDList]
        self.ID.extend(unigueIDList)
        return unigueIDList

    def loadList(filename1, filename2):
        with open(filename1, "r") as csv1, open(filename2, "r") as csv2:  
            csvReader1 = csv.DictReader(csv1)
            csvReader2 = csv.DictReader(csv2)
            iDList = []
            for row1, row2 in zip(csvReader1, csvReader2):  
                idList.append((row2["Id"]))
            return iDList 

第二模块

def main()
    newTest = ClassObjects(unigueIDList, nameList, priceList)
    iDList = newTest.loadList(filename1, filename2)
    Id = newTest.uniqueId(iDList)

Tags: 模块inselfmaindefnotitempricelist
3条回答

我想你应该先建立你的实例。现在如何调用它,没有先创建实例,只是像调用静态方法一样调用它,但它不是,因此第一个参数被视为self,第二个参数丢失。相反,您首先需要一个初始化的对象。你知道吗

class ClassObjects:
    def __init__(self, iDList, nameList, priceList):
        self.ID = iDList
        self.name = nameList
        self.price= priceList

    def uniqueId(self, list):
        pass #empty definitions are forbidden
    def loadList(filename1, filename2):
        pass #empty definitions are forbidden

以及创建实例的主要位置

def main():
    # create instance with empty list properties
    clsObj = ClassObjects([], [], []) 
    # the values you pass through the methods need to be defined beforehand
    Id = clsObj.uniqueId(yourList)
    iDList = clsObj.loadList(someFilename, otherFilesname)

我相信你们并没有给懒汉下定义是事实。请试试这个:

def main()
    idList=[]
    Id = ClassObjects.uniqueId(idList)

如果问题解决了,您还没有定义idList

我不知道这是否是一个优雅的解决方案,但您可以尝试在调用函数时输入类名作为参数。你知道吗

ClassObjects.uniqueId(ClassObjects,idList)

相关问题 更多 >