2013-02-13 61 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