包装哈希表类

2024-09-30 01:26:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要能够包装一个哈希表类。在阅读了包装器之后,我很确定这是包装器的一个不好的用法,但是在我的作业中我有不同的数据结构,需要在程序中轻松交换)

我有以下代码:

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还突出显示了所有哈希表部分。 如果能帮上忙,我们将不胜感激

编辑:我得到了以下示例:

class BSTTableWrapper:
   def tableInsert(item):
       return self.bst.searchtreeInsert(item)

Tags: selfsizereturninitdefitemclassprobe
1条回答
网友
1楼 · 发布于 2024-09-30 01:26:15

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)

因为函数/方法是从哈希表继承的

相关问题 更多 >

    热门问题