Давайте подробно рассмотрим ваш код.
Первое, что я заметил, это то, что вам нужно добавить ключевое слово pass в любой блок, который пуст в Python.Кроме того, вы забыли открыть свой блок, не используя цвет.Итак, если я запускаю код как есть, я получаю это:
File "main.py", line 2 def __init__(self)
^
SyntaxError: invalid syntax
Переходя ко второму методу, в первой букве метода печати (P), вы заметите, что он в верхнем регистре.В программировании важны соглашения об именах, поэтому print () должно быть написано строчными буквами.Давайте посмотрим на ошибки, отмеченные во втором методе:
Как упоминалось выше, исправьте print () .Переходя к следующему пункту, Размер подчеркнут зеленым цветом.Я бы посоветовал вам получить программу для написания кода для вашего кода, в этом случае условные переменные должны начинаться со строчной буквы.Если мы исправим эти две вещи, ваш код будет выглядеть так:
хорошо, хорошо, сейчас все становится лучше.Но почему я имеет красное подчеркивание?Причина того, что self контекстуализирует текущий экземпляр, вызывая этот метод этого класса.проблема в том, что свойство стека не было объявлено, для этого измените ваш код следующим образом:
class stack:
def __init__(self):
self.stack = []
def stacksize(self):
size = len(self.stack)
print('size is', size)
Обратите внимание, что я удалил проход и назначил пустой список члену стекапеременная.Конечно, вы решите, что переменная-член stack будет, в данном случае я просто добавил ее в список.
Хорошо, теперь последний вопрос: почему размер равен None?С изменениями кода, которые я добавил, теперь он должен возвращать ноль (0) , поскольку список стеков пуст, но список есть.
Классы по соглашению начинаются с заглавной буквы.
Наконец, как вы можете получить доступ к верхнему элементу стека?Например:
Контекст этого кода, конечно, находится вне контекста класса, обратите внимание, что он не имеет self. , но это должно быть то же самое для вашего self.stack .
Надеюсь, это поможет приятель!:)