Я получаю эту ошибкуTypeError: super() принимает не менее 1 аргумента (0 данных), которая является конкретной для любой версии python?
TypeError: super() takes at least 1 argument (0 given)
используя этот код на python2.7.11:
class Foo(object):
def __init__(self):
pass
class Bar(Foo):
def __init__(self):
super().__init__()
Bar()
Обходной, чтобы заставить его работать будет:
class Foo(object):
def __init__(self):
pass
class Bar(Foo):
def __init__(self):
super(Bar, self).__init__()
Bar()
кажется синтаксис специфичен для python 3. Итак, что лучше всего обеспечить совместимый код между 2.x и 3.x и избежать этой ошибки?
Этот синтаксис для Python 3. –
@ DanielRoseman Я вижу, спасибо. Чтобы сделать мой вопрос немного более полезным, я немного отредактировал некоторые дополнительные материалы. – BPL
Синтаксис Python 2 по-прежнему действителен в Python 3 в этом случае; если вы хотите поддерживать обе версии, используйте это. Обратите внимание, однако, что существует множество других несовместимостей между версиями. –