Зачем нам нужен __init__ для инициализации класса Python - PullRequest
0 голосов
/ 15 ноября 2018

Я довольно новичок в ООП, и мне нужна помощь, чтобы понять необходимость конструктора в классе Python.

Я понимаю, init используется для инициализации переменных класса, как показано ниже:

class myClass():
    def __init__ (self):
        self.x = 3
        print("object created")

A = myClass()
print(A.x)
A.x = 6
print(A.x)

Выход:

object created
3
6

но я мог бы просто сделать,

class myClass():
    x = 3
    print("object created")

A = myClass()
print(A.x)
A.x = 6
print(A.x)

, который печатает тот же результат.

Не могли бы вы объяснить, зачем нам нужен конструктор, или привести пример случая, когда вышеуказанный метод не будет работать?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

__init__ используется для инициализации состояния нескольких экземпляров класса , где состояние каждого экземпляра отделено друг от друга, тогда как ваш второй пример без __init__ инициализирует атрибут общий среди всех экземпляров класса.

0 голосов
/ 15 ноября 2018

Образец цитирования: Но я тоже могу сделать

class myClass():
    x = 3
    print("object created")

A = myClass()
print(A.x)
A.x = 6
print(A.x)

Нет, вы не можете. Существует принципиальная разница, если вы хотите создать два или более объектов этого же класса. Может быть, это поведение станет яснее, как это

class MyClass:
    x = 3
    print("Created!")

a = MyClass() # Will output "Created!"
a = MyClass() # Will output nothing since the class already exists!

В принципе вам нужен __init__ для того, чтобы написать код, который должен выполняться для каждого нового объекта всякий раз, когда этот объект инициализируется / создается - не один раз, когда класс читается.

...