У меня есть класс, который принимает некоторые аргументы конструктора, например:
class Works:
def __init__(self, x):
pass
Этот класс отлично работает; Я могу позвонить Works(5)
без проблем.
Однако добавление метода __new__
в мой класс приводит к тому, что он перестает работать, даже если метод __new__
ничего не делает, кроме передачи полученных им аргументов:
class Breaks:
def __new__(cls, x):
return super().__new__(cls, x)
def __init__(self, x):
pass
Если я попытаюсь создать экземпляр этого класса, он выдаст исключение:
>>> Breaks(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "untitled.py", line 8, in __new__
return super().__new__(cls, x)
TypeError: object.__new__() takes no arguments
Почему этот метод __new__
, который абсолютно ничего не делает, заставляет мой класс перестать работать, и как я могу это исправить?