对象无法正常工作:属性错误

我完全被困住了,正在寻找指导。我正在创建自己版本的Sets类,将这个类命名为Set。我还创建了一个测试函数。在我进入并/减部分之前,一切都运行得很好。

选择 | 换行 | 行号
  1. def intersection(self,set2):
  2.         self.inter=Set([])
  3.         for i in self.elements:
  4.             for j in set2.elements:
  5.                 if i == j:
  6.                     self.inter = self.inter.addElement(j)
  7.         return self.inter
  8.  
  9.     def union(self,set2):
  10.         self.un=Set([])
  11.         for i in self.elements:
  12.             self.un = self.un.addElement(i)
  13.             for j in set2.elements:
  14.                 if i!=j:
  15.                     self.un = self.un.addElement(j)
  16.         return self.un
  17.  
  18.     def subtract(self,set2):
  19.         self.sub=Set([])
  20.         for i in self.elements:
  21.             self.sub= self.sub.addElement(i)
  22.             for j in set2.elements:
  23.                 if i==j:
  24.                     self.sub= self.sub.deleteElement(i)
  25.         return self.sub
  26.  

现在,交叉口运行良好。我基本上是在遵循联合的模式,但当我管理它的时候...

选择 | 换行 | 行号
  1. Traceback (most recent call last):
  2.   File "C:\Users\monty27\Desktop\Math Computing\setsMontgomery.py", line 87, in <module>
  3.     main()
  4.   File "C:\Users\monty27\Desktop\Math Computing\setsMontgomery.py", line 83, in main
  5.     print "Union:", set1.union(set2)
  6.   File "C:\Users\monty27\Desktop\Math Computing\setsMontgomery.py", line 39, in union
  7.     self.un = self.un.addElement(j)
  8. AttributeError: 'list' object has no attribute 'addElement'
  9.  

有什么想法吗?我已经在这方面做了很多工作,尝试只复制self.Element,然后逐字使用cross()代码,除了使if语句i!=j之外。它根本不起作用。

# 回答1



这可能会有帮助,也可能没有帮助,但相交的逻辑是错误的。您正在多次添加Set2的所有元素。基本上,对于每个i,您添加了Set2中不等于i的所有元素(即所有元素或除1之外的所有元素)。
我想这是一个问题,因为您似乎要付出相当大的努力来确保addElement只添加新元素。
如果这确实是问题所在,我会考虑让addElement本身更健壮。因此,当您添加一个元素时,检查它是否已经在其中,如果没有,则只添加它。
如果有帮助的话请告诉我。如果没有,请发布addElement方法。

标签: python

添加新评论