При написании функции __init__
для класса в python вы всегда должны вызывать функцию __init__
его суперкласса. Мы можем использовать это для передачи соответствующих атрибутов непосредственно суперклассу, поэтому ваш код будет выглядеть так:
class Person(object):
def __init__(self, name, phone):
self.name = name
self.phone = phone
class Teenager(Person):
def __init__(self, name, phone, website):
Person.__init__(self, name, phone)
self.website=website
Как уже отмечали другие, вы можете заменить строку
Person.__init__(self, name, phone)
с
super(Teenager, self).__init__(name, phone)
и код сделает то же самое. Это потому, что в python instance.method(args)
это просто сокращение для Class.method(instance, args)
. Если вы хотите использовать super
, вам нужно убедиться, что вы указали object
в качестве базового класса для Person
, как я сделал в своем коде.
Документация python содержит дополнительную информацию о том, как использовать ключевое слово super
. В этом случае важно то, что он говорит Python искать метод __init__
в суперклассе self
, который не является Teenager