Имя «Я» не определено и как его запрашивать за пределами __init__ - PullRequest
0 голосов
/ 08 июня 2018

Есть вопросы о себе, но я нигде не могу найти хорошего и легкого для понимания объяснения, почему я не могу сделать это и как я должен делать это правильно.То, как это делается, очень противоречит мне и многим другим людям, которые начинают работать с python.Пример:

class cls:
    def __init__(self):
        self.a = True

    if self.a:
        print("self.a is True")
    else:
        print("self.a if False")

Я понятия не имею, как я могу получить доступ или проверить "a" вне init в классе.Если я сделаю что-то вроде этого:

class cls:
    def __init__(self):
        self.a = True

    if a:
        print("a is True")
    else:
        print("a if False")

Тогда я получу NameError.В какой-то момент я всегда добираюсь до этой проблемы, и я не могу понять, как справиться с этим правильно.Должен ли я сделать это вне класса с функцией?Все, что вы пытаетесь сделать, должно иметь смысл, в этом случае не работает.Другой пример:

class cls:
    def __init__(self):
        self.a = True

    if cls.a:
        print("self.a is True")
    else:
        print("self.a if False")

Дает IndentationError: неожиданный отступ.

1 Ответ

0 голосов
/ 08 июня 2018

Похоже, вам просто нужно обернуть ваш код в функцию, например:

class myClass():
    def __init__(self):
        self.a = True

    def check_a(self):
        if self.a:
            print('a is True')
        else:
            print('a is not True')

И использовать это как:

inst = myClass()
inst.check_a()

, которая будет делать то, что вы ожидаете,print: 'a is True'

Надеюсь, что это немного прояснит ситуацию.

...