«TypeError: object.__init__() принимает ровно один аргумент» при наследовании встроенных типов [дубликат]Python

Программы на Python
Anonymous
«TypeError: object.__init__() принимает ровно один аргумент» при наследовании встроенных типов [дубликат]

Сообщение Anonymous »

Я пытаюсь реализовать тип, который наследует встроенный тип float:

Код: Выделить всё

class Percent(float):
def __init__(self, x):
super().__init__(x / 100)

print(float(Percent(12)))
# I want 0.12
Однако на самом деле я получаю:

Код: Выделить всё

Traceback (most recent call last):
File "
", line 5, in 
print(float(Percent(12)))
~~~~~~~^^^^
File "", line 3, in __init__
super().__init__(x / 100)
~~~~~~~~~~~~~~~~^^^^^^^^^
TypeError: object.__init__() takes exactly one argument (the instance to initialize)
Наследование работает с базовыми классами, определенными в Python

Код: Выделить всё

class MyFloat:
def __init__(self, value):
self.value = value
def __float__(self):
return self.value

class Percent(MyFloat):
def __init__(self, x):
super().__init__(x / 100)

print(float(Percent(12)))
# 0.12
Мои вопросы:
  • Почему я не могу успешно наследовать float?
  • Есть ли способы обойти эту проблему, кроме самостоятельного определения класса MyFloat?

Вернуться в «Python»