1

我有两个文件,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'
4

1 回答 1

4

好吧,你的MultiSet不是继承自,SkipList所以它不应该调用SkipList自己的任何方法。如您所见,在这种情况下,SkipList有一个.size属性但MultiSet没有。

要解决这个问题,您必须要么进行MultiSet扩展SkipListclass MultiSet(SkipList)),要么在MultiSet.__len__不直接使用SkipList方法的情况下实现(例如,通过MultiSet包含一个实例SkipList并返回该实例的大小)。

于 2013-02-13T19:44:32.520 回答