我有两个文件,multitest.py和skiplist.py 我们将skiplist.py作为我们无法编辑的入门代码。
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
在multitest.py中,我将不得不创建自己的 len 方法,但我不允许访问任何内置函数。
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'
答案 0 :(得分:4)
好吧,您的MultiSet
不会从SkipList
继承,所以它不应该调用SkipList
的任何方法。在这种情况下,如您所见,SkipList
具有.size
属性,但MultiSet
没有。
要解决此问题,您必须直接MultiSet
扩展SkipList
(class MultiSet(SkipList)
)或实施MultiSet.__len__
而不使用SkipList
方法(例如,让MultiSet
包含SkipList
的实例并返回该实例的大小。