Мне сложно определить, какой код я натолкнулся.Какова цель прямого вызова __init__?
Код имеет класс Foo
, который имеет метод __init__
, который принимает несколько аргументов. Из того, что я узнал о Python до сих пор, позвонив по номеру Foo('bar')
, он передаст эту строку в качестве параметра __init__
(который, как я полагаю, должен быть эквивалентом конструктора).
Но проблема, с которой я сталкиваюсь, заключается в том, что код, на который я смотрю, напрямую вызывает Foo.__init__('bar')
. Какова цель этого? Я почти чувствую, что у меня нет другой цели за __init__
.
О, дорогой. Пожалуйста, не вызывайте '__init__' для выполнения повторной инициализации в любой разумной системе ... – nneonneo
Согласен. Извините, если мое объяснение плохое. Прямо сейчас я просто хотел показать, что делает '__init__'. Не там, где это должно быть вызвано. –
Говорить «' __init__' на самом деле не является конструктором, это скорее инициализатор », это не полезно. Это то, что кто-то написал в книге, когда это повторялось во всем Интернете, несмотря на то, что это не имеет смысла и просто путает людей, которые уже знают, что такое конструктор, кто изучает Python. '__init__' точно соответствует конструкторам с других языков, а официальная документация на Python даже относится к ней как к одному! Если вы могли бы вызвать конструктор на существующем объекте на любом другом языке OO, это именно то, что он сделал бы. – Ben