В Python 3 можно использовать super ()
вместо super (MyClass, self)
, но это работает только в методы, которые были определены внутри класса. Как описано в Микеле Симионато ' В статье следующий пример не работает:
def __init__(self):
print('calling __init__')
super().__init__()
class C(object):
__init__ = __init__
if __name__ == '__main__':
c = C()
Не работает, потому что super ()
ищет ячейку __ class __
, которая в данном случае не определена.
Можно ли установить эту ячейку вручную после того, как функция была определена, или это невозможно?
К сожалению, я не понимаю, как ячейки работают в этом контексте (не нашел много документации по этому поводу). Я надеюсь на что-то вроде
__init__.__class_cell_thingy__ = C
. Конечно, я бы использовал это только в ситуации, когда назначение класса однозначно / уникально (в моем случае весь процесс добавления методов к классу автоматизирован, так что это было бы просто чтобы добавить такую строку).