【发布时间】:2021-05-22 15:05:54
【问题描述】:
我试图了解在 python 中使用继承时何时初始化超类。最初我认为只需声明一个继承自超类的类,例如。 class my_class(superclass):, 将使所有超类的属性和方法对子类可用。这对于来自 Java 的人来说是有意义的。然后我读到 Python 强制我们在我们可以在子类中实现它们之前初始化超类,或者使用超类。init() 或 super().init() .然后我遇到了这段代码,我没有初始化父类,但是 Python 让我可以在没有初始化父类的情况下从超类访问 self.queue 属性。我阅读了 Python 文档,有时我认为我知道它们的含义而其他一些我不知道。谁能解释一下我们什么时候必须在我们的子类中初始化超类?
class QueueError(IndexError):
pass
class Queue:
def __init__(self):
self.queue = []
def put(self,elem):
self.queue.insert(0,elem)
def get(self):
if len(self.queue) > 0:
elem = self.queue[-1]
del self.queue[-1]
return elem
else:
raise QueueError
class SuperQueue(Queue):
def isempty(self):
if not self.queue:
return True
else:
return False
que = SuperQueue()
que.put(1)
que.put("dog")
que.put(False)
for i in range(4):
if not que.isempty():
print(que.get())
else:
print("Queue empty")
【问题讨论】:
标签: python-3.x inheritance initialization