在Python中运行导入文件中的代码

时间:2013-02-13 19:41:29

标签: python class

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

1 个答案:

答案 0 :(得分:4)

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

要解决此问题,您必须直接MultiSet扩展SkipListclass MultiSet(SkipList))或实施MultiSet.__len__而不使用SkipList方法(例如,让MultiSet包含SkipList的实例并返回该实例的大小。