无法在我创建的 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)
我有 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)