python как наследовать родительский стек

#python #class

#python #класс

Вопрос:

эй, ребята, я новичок в структуре данных, и мне было интересно, как наследовать атрибуты родительского класса. Я пытаюсь наследовать атрибуты стека (родительского) в stack3 (дочерний), но ошибка продолжает появляться: TypeError: init() отсутствует 1 требуемый позиционный аргумент: ‘_Stack3__list’ Любая помощь или предложения будут оценены!

 class Stack:
  def __init__(self):
    self.__list= []
  def isEmpty(self):
    return self.__list == []
  def size(self):
    return len(self.__list)
  def clear(self):
    self.__list.clear() 
  def push(self, item):
    self.__list.append(item)
  def pop(self):
    if self.isEmpty():
      return None
    else:
      return self.__list.pop()
  def get(self):
    if self.isEmpty():
      return None
    else:
      return self.__list[-1]
  def __str__(self):
    output = '<'
    for i in range( len(self.__list) ):
      item = self.__list[i]
      if i < len(self.__list)-1 :
        output  = f'{str(item)}, '
      else:
        output  = f'{str(item)}'
    output  = '>'
    return output

class Stack3(Stack):
  def __init__(self,__list):
    self.__list = __list
    super().__init__(self.__list)
  def printMe(self):
    super().__str__()

s = Stack3()
print(s.pop())
for i in range(1,6):
  s.push(i)
print('Content of stack =',s)
print('Item at top=',s.get())
print('Size=', s.size())
while not s.isEmpty():
  print(s.pop())
  print(s)
  

Ответ №1:

Если вы хотите передать все аргументы из Stack3.__init__ в Stack. __init__ использовать:

 class Stack3(Stack):
  def __init__(self,*args, **kwargs):
    super().__init__(*args, **kwargs)
  

подробное объяснение и использование см. *args Здесь **kwargs .