2013-02-13 54 views
1

我有两个文件,multitest.py和skiplist.py 我们给skiplist.py作为我们无法编辑的启动器代码。从Python中导入的文件运行代码

multitest.py是我应该创建和skiplist.py

在skiplist.py文件借用功能的文件,我们有像

class SkipList(object): 
    def __len__(self): 
     """(SkipList) -> int 
     Return the number of items in this skip list. 
     """ 
     return self.size 

在多重测试的方法。 py,我将不得不创建自己的方法,但我不允许访问任何内置函数。

from skiplist import * 
class MultiSet(object): 
    def __len__(self): 
     """(MultiSet) -> int 
     Return the number of items in this multiset. 
     """ 
     return SkipList.__len__(self) 

当运行

s = MultiSet([]) 
print(len(s)) 

我得到的错误

Traceback (most recent call last): 
File "/Applications/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 134, in <module> 
File "/Applications/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 56, in __len__ 
File "/Users/Borna/Documents/CSC148/Assignment/skiplist.py", line 39, in __len__ 
return self.size 
builtins.AttributeError: 'MultiSet' object has no attribute 'size' 
+1

技术上'对象'是一个内建的,所以... – geoffspear 2013-02-13 19:45:03

回答

4

好了,你的MultiSet不会SkipList继承所以它不应该呼吁本身的SkipList任何方法。在这种情况下,如您所见,SkipList具有.size属性,但MultiSet不具有。

要解决这个问题,你就必须要么使MultiSet延长SkipListclass MultiSet(SkipList)),或实施MultiSet.__len__不直接使用SkipList方法(例如,通过具有MultiSet包含SkipList一个实例并返回该实例的大小)。

+0

我试着通过类MultiSet(SkipList)继承并得到完全相同的错误。 – user1754499 2013-02-13 19:53:56