Оба запроса выполняют внутреннее объединение, просто различный синтаксис.
# Initialize using Parent
#
class MySubClass(MySuperClass):
def __init__(self):
MySuperClass.__init__(self)
Или, что еще лучше, использование встроенной функции Python, super ()
(см. Python 2 / Python 3 документация для него) может быть немного лучшим методом вызова родительского элемента для инициализации:
# Better initialize using Parent (less redundant).
#
class MySubClassBetter(MySuperClass):
def __init__(self):
super(MySubClassBetter, self).__init__()
Или, точно так же, как указано выше, за исключением использования формы с нулевым аргументом super ()
, которая работает только внутри определения класса:
class MySubClassBetter(MySuperClass):
def __init__(self):
super().__init__()
Маленький героический пример:
class SuperHero(object): #superclass, inherits from default object
def getName(self):
raise NotImplementedError #you want to override this on the child classes
class SuperMan(SuperHero): #subclass, inherits from SuperHero
def getName(self):
return "Clark Kent"
class SuperManII(SuperHero): #another subclass
def getName(self):
return "Clark Kent, Jr."
if __name__ == "__main__":
sm = SuperMan()
print sm.getName()
sm2 = SuperManII()
print sm2.getName()
class MySubClass(MySuperClass):
def __init__(self):
MySuperClass.__init__(self)
# <the rest of your custom initialization code goes here>
Раздел о наследовании в документации python объясняет это более подробно
class Class1(object):
pass
class Class2(Class1):
pass
Класс 2 является подклассом Класса 1
Вы используете:
class DerivedClassName(BaseClassName):
Подробнее см. В документации Python, раздел 9.5 .
Создание подклассов в Python выполняется следующим образом:
class WindowElement:
def print(self):
pass
class Button(WindowElement):
def print(self):
pass
Вот учебник о Python, который также содержит классы и подклассы.
class Mammal(object):
#mammal stuff
class Dog(Mammal):
#doggie stuff