#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
.