У меня есть класс с __init__
функцией.
Как я могу вернуть целочисленное значение из этой функции при создании объекта?
Я написал программу, в которой __init__
выполняется синтаксический анализ командной строки, и мне нужно установить какое-то значение. Можно ли установить его в глобальной переменной и использовать в других функциях-членах? Если да, то как это сделать? Пока что я объявил переменную вне класса. и установка одной функции не отражается на другой функции ??
__init__
; мы можем помочь вам, если вы опишете, чего вы действительно пытаетесь достичь.Ответы:
__init__
требуется для возврата None. Вы не можете (или, по крайней мере, не должны) возвращать что-то еще.Попробуйте сделать все, что вы хотите, чтобы вернуть переменную экземпляра (или функцию).
источник
new
здесь? Является лиnew
заложенная в Python? Я предположил, что семантика Python отличается от Java и других языков, в которых используется это слово.super().__init__
производного класса без необходимости передавать их через переменную экземпляра.Почему вы хотите это сделать?
Если вы хотите вернуть какой-то другой объект при вызове класса, используйте
__new__()
метод:источник
__init__
, вы понимаете, что на самом деле для обеспечения желаемой гибкости вам нужна фабрика классов, которая возвращает экземпляры специализированных подклассов. Но пользователи вашей библиотеки уже используют ваш существующий API. Чтобы сохранить его, вы переопределяете,__new__
чтобы возвращать экземпляры ваших специализированных подклассов.datetime
модуля из стандартной библиотеки. Он использует__new__
именно так.Из документации
__init__
:В качестве доказательства этот код:
Выдает эту ошибку:
источник
Пример использования рассматриваемого вопроса может быть таким:
У меня недостаточно репутации, поэтому я не могу написать комментарий, это безумие! Хотел бы я опубликовать это как комментарий к Веронике
источник
self
не определено в__new__(cls, Item)
Этот
__init__
метод, как и другие методы и функции, по умолчанию возвращает None в отсутствие оператора return, поэтому вы можете написать его, как любой из этих:Но, конечно, добавление
return None
ничего вам не даст.Я не уверен, что вам нужно, но вам может быть интересно одно из них:
печатает:
источник
f = Foo().value
__init__
.__init__
ничего не возвращает и должен всегда возвращатьсяNone
.источник
Вы можете просто установить его в переменную класса и прочитать его из основной программы:
источник
Просто хотел добавить, вы можете вернуть классы в
__init__
Вышеупомянутый метод помогает вам реализовать конкретное действие при возникновении исключения в вашем тесте.
источник
super().__init__
возвращаетсяNone
, поэтому вы возвращаетесьNone
, что нормально, но избыточно.init () не возвращает никакого значения, решено идеально
вывод: моя скорость 21 кмч
источник
Что ж, если вам больше не нужен экземпляр объекта ... вы можете просто заменить его!
источник
self
внутри этого конструктора.