无法在我创建的 python class 上调用 _head 属性

Cant call _head attribute on my python class I created

我有 2 个 classes,一个 class 称为存储,一个 class 称为库。存储 class 有一个由节点组成的列表。

图书馆 class 需要能够在其中有一个存储对象来保存其数据。

我想要它,所以当我调用任何存储方法时,它们也在库中工作 class。

我有一个获取列表头节点的方法,当我执行以下操作时它工作正常:

objstor = Storage()
# I add some nodes to the list
print(objstor._head) and this works and gives me the first nodes head

当我创建一个使用存储器 class 来存储其数据的库 class 时,会发生这种情况:

objlib = Library()
# i add data to the storage class within the library class
print(objlib._head) gives me an error ''Library' object has no attribute '_head'

这是怎么回事?

仅仅因为 Library class 有一个成员是 Storage 并不意味着它具有 Storage 的所有属性。

这样想:

class Spam:
    def __init__(self):
        self.n = 2

现在 Spam 使用 int class 来存储其数据。您希望它像 int 一样工作吗?

这里没有区别。仅仅因为 Library 使用 Storage 来存储它的数据并不意味着它 一个 Storage.


如果你真的想让 Library 成为一个 Storage 而不是仅仅使用一个,你可以通过继承来做到这一点:

class Library(Storage):
    def __init__(self, some, args):
        super().__init__(whatever, args, Storage, needs)

但通常情况下,您不希望这样。您只想访问 Storage,然后访问其成员:

class Library:
    def __init__(self, some, args):
        self.storage = Storage(whatever, args, Storage, needs)

lib = Library(whatever)
print(lib.storage._head)