определение переменных в классах python - PullRequest
1 голос
/ 08 января 2020

Существует код, в котором переменная определяется следующим образом:

class MoveSquareClass(object):

    # create messages that are used to publish feedback/result
    _feedback = TestFeedback()
    _result   = TestResult()

    def __init__(self):
    # code continues

Мой вопрос: что произойдет, когда мы создадим экземпляр класса, будут ли переменные объявлены? Я понимаю, что определение переменных внутри конструктора упростит ситуацию, но это был код. Также мы должны вызывать их, используя префикс .init? Если да, то почему?

1 Ответ

1 голос
/ 08 января 2020

Объекты _feedback и _result создаются один раз , когда создается класс MoveSquareClass. Они будут разделены между всеми последующими экземплярами MoveSquareClass. Если бы они были созданы внутри __init__, они больше не были бы общими объектами; каждый экземпляр MoveSquareClass получит свой собственный экземпляр TestFeedback и TestResult. Это вполне может привести к значительным изменениям в поведении, поэтому вам следует с осторожностью относиться к его изменению, если вы не до конца понимаете код.

...