我需要能够包装一个HashTable类。在阅读了包装器后,我很确定这是一个包装器的错误用法,但它在我的任务中。 (我有不同的数据结构,需要在程序中轻松交换)
我有以下代码:
from HashTable import HashTable
class HashTableWrapper(HashTable):
def __init__(self, probe, size):
super().__init__(probe, size)
def tableInsert(self, searchKey, newItem):
return self.HashTable.tableInsert(searchKey, newItem)
def tableRetrieve(self, searchKey):
return self.HashTable.tableRetrieve(searchKey)
def tableDelete(self, searchKey):
return self.HashTable.tableDelete(searchKey)
当我使用时:
x = HashTableWrapper("linearProbe", 100)
但是,如果我使用以下内容,一切都很好:
x.tableInsert(4, 6)
我收到以下错误:AttributeError:' HashTableWrapper'对象没有属性' HashTable' 我认为返回部分有问题,因为python还会突出显示所有HashTable部分。 一些帮助将不胜感激。
编辑:我得到了以下示例:
class BSTTableWrapper:
def tableInsert(item):
return self.bst.searchtreeInsert(item)
答案 0 :(得分:-1)
self.HashTable
永远不会被初始化,因此调用self.HashTable.<function or variable>
永远不会有效。如果HashTable对象具有方法tableInsert
,那么您所要做的就是
def tableInsert(self, searchKey, newItem):
return self.tableInsert(searchKey, newItem)
def tableRetrieve(self, searchKey):
return self.tableRetrieve(searchKey)
def tableDelete(self, searchKey):
return self.tableDelete(searchKey)
因为函数/方法是从HashTable继承的。