Невозможно использовать подкласс - PullRequest
0 голосов
/ 28 мая 2019

Здравствуйте, у меня есть этот код:

class A:
    def __init__(self, name):
        self.name = name

class B(A):
    def __init__(self):
        super.__init__()

Но я не могу использовать класс B:

Я пытался написать:

C = B() 

Но я получаю:

TypeError
Traceback (most recent call last)
<ipython-input-7-ea9745abfeb2> in <module>()
----> 1 C = B()

<ipython-input-4-2d2ef2cc5406> in __init__(self)
  5 class B(A):
  6   def __init__(self):
----> 7     super.__init__()

TypeError: descriptor '__init__' of 'super' object needs an argument

Не могли бы вы помочь мне, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 28 мая 2019

Вы должны предоставить аргумент для super,

class A:
    def __init__(self, name):
        self.name = name

class B(A):
    def __init__(self, name):
        super().__init__(name)

или аргумент по умолчанию для name в A

class A:
    def __init__(self, name=''):
        self.name = name

class B(A):
    def __init__(self):
        super().__init__()   # this works, but is probably not a good idea
                             # as you might need to pass a name to A, at some moment

, возможно, в вашем случае, Bне нужно __init__?

class A:
    def __init__(self, name=''):
        self.name = name

class B(A):
    pass
0 голосов
/ 28 мая 2019

Это сработало для меня

Для Python 3:

class A:
    def __init__(self, name):
        self.name = name

class B(A):
    def __init__(self):
        super().__init__('temp name')

C = B()

Для Python 2:

class A(object):
    def __init__(self, name):
        self.name = name

class B(A):
    def __init__(self):
        super(B, self).__init__("any name")


C = B()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...