Почему добавление метода __new__ в мой класс вызывает исключение TypeError: object.__new__ не принимает аргументов?

У меня есть класс, который принимает некоторые аргументы конструктора, например:

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__, который абсолютно ничего не делает, заставляет мой класс перестать работать, и как я могу это исправить?


person Aran-Fey    schedule 30.08.2018    source источник
comment
@juanpa.arrivillaga Да, ты прав. Ваше гугл-фу лучше моего :)   -  person Aran-Fey    schedule 30.08.2018
comment
проверьте: github.com/python/cpython/blob/ на который ссылались в обмане   -  person juanpa.arrivillaga    schedule 30.08.2018