在另一个模块中使用python方法
我创建了一个类,该类使用了我试图调用的方法,尽管另一个python模块只包含一个主函数,它给了我一个名称“unigueIDList is not defined”错误。下面缩短了代码 第一模块在另一个模块中使用python方法,python,Python,我创建了一个类,该类使用了我试图调用的方法,尽管另一个python模块只包含一个主函数,它给了我一个名称“unigueIDList is not defined”错误。下面缩短了代码 第一模块 class ClassObjects: def __init__(self, unigueIDList, nameList, priceList): self.ID = unigueIDList self.name = nameList self.p
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)
我相信你们并没有给懒汉下定义是事实。请试试这个:
def main()
idList=[]
Id = ClassObjects.uniqueId(idList)
如果问题解决了,您还没有定义idList我不知道这是否是一个优雅的解决方案,但是您可以尝试在调用函数时输入类名作为参数
ClassObjects.uniqueId(ClassObjects,idList)
我认为您应该首先构建实例。您现在如何调用它,没有先创建实例,您只是像调用静态方法一样调用它,但它不是,因此第一个参数被视为
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)
您需要首先创建一个新实例。您正在调用一个实例方法,而不是静态/类方法。@BramVanroy这就是我尝试使用newTest=ClassObjects(iDList、nameList、priceList)时所做的操作。您不调用
instance=ClassObjects(iDList、[]、[])有什么原因吗
然后使用类设计器想要的方法?@tripleee我尝试了类似的方法,在运行ITI时出现了一个idList is not defined错误如果您试图使用一个未创建的变量,这与您的问题无关。我们真的猜不出这些变量是什么意思,或者它们来自哪里。在LoadList内部创建idList时,请显示定义idList的代码。还有main()是loadlist的方法吗?@No loadlist()是Class1中的方法,main在类之外的一个单独的模块中。因此,您必须链接到idList。类似于Class1的东西。idList@kabanus我在一篇评论中提到了这一点,但我将在中编辑它。在我得到的这个解决方案中,没有定义名称“iDList”,我在class1中定义它。好的,您的构造函数需要三个属性,iDList、nameList和priceList,所以您必须确保在其中输入正确的值。构建实例所需的这些列表的实际变量名。根据Python,正确的变量名肯定是可用的,而不是。请注意,在clsObj
中,iDList
的大写字母与第Id
行中的大写字母不同:iDList
。可能是你的代码输入错误。