OSMANOF
@OSMANOF
Segmentation fault

Почему self не вызывается?

Почему self не вызывается?
Мой код:
class X:
    def __init__(self, lang=None):
        self.lang = "en"


    def end(self, lang=self.lang):
        pass


Выдает ошибку:
Traceback (most recent call last):
File "c:/Users/Пользователь/AppData/Local/Programs/Python/Python38-32/Lib/oengine/__init__.py", line 1, in
class X:
File "c:/Users/Пользователь/AppData/Local/Programs/Python/Python38-32/Lib/oengine/__init__.py", line 13, in X
def end(self, lang=self.lang):
NameError: name 'self' is not defined

Объясните пожалуйста, в чем проблема
  • Вопрос задан
  • 808 просмотров
Решения вопроса 2
gscraft
@gscraft
Программист, философ
А что у вас self делает в def end(self, lang=self.lang) , это так не работает, нельзя в определении метода передать self в качестве значения по умолчанию. К слову, у Вас в конструкторе self.lang = "en", игнорируется lang. В методе end у Вас уже есть self внутри метода и переменная lang. Сравнение должно быть внутри (например):
class X:
    def __init__(self, lang=None):
        self.lang = lang

    def end(self, lang=None):
        if not lang:
             lang = self.lang

— хотя в этом нет особого смысла.
Ответ написан
Комментировать
sprmax
@sprmax
К ответу Gennady S , можно еще сделать так
class X:
    def __init__(self, lang='english'):
        self.lang = lang

    def end(self, lang=None):
        if not lang:
            lang = self.lang
        # print(lang)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы