# base classclass Animal: def speak(self): return "Some sound"#ans: derived classclass Dog(Animal): def speak(self): return "Woof!"Dog().speak()#ans: "Woof!"
# inherit __init__class Animal: def __init__(self, name): self.name = nameclass Dog(Animal): passDog("Rex").name#ans: "Rex"
# call parent __init__class Animal: def __init__(self, name): self.name = nameclass Dog(Animal): def __init__(self, name, breed): super().__init__(name) self.breed = breedDog("Rex", "Lab").name#ans: "Rex"
# override parent methodclass Animal: def speak(self): return "Sound"class Dog(Animal): def speak(self): return "Woof!"Dog().speak()#ans: "Woof!"
# call parent from childclass Animal: def speak(self): return "Sound"class Dog(Animal): def speak(self): parent = super().speak() return f"{parent} and Woof!"Dog().speak()#ans: "Sound and Woof!"
# isinstance with inheritance?class Animal: passclass Dog(Animal): passdog = Dog()isinstance(dog, Animal)#ans: True
# issubclass?class Animal: passclass Dog(Animal): passissubclass(Dog, Animal)#ans: True
# method resolution order?class Animal: def speak(self): return "A"class Dog(Animal): passDog().speak()#ans: "A" (inherited)
# super() without override?class Base: def method(self): return 1class Derived(Base): def other(self): return super().method()Derived().other()#ans: 1
# multiple inheritance?class A: def method(self): return "A"class B: def method(self): return "B"class C(A, B): passC().method()#ans: "A" (left to right)
# __mro__?class Animal: passclass Dog(Animal): passDog.__mro__#ans: (Dog, Animal, object)
# override __init__ without super?class Base: def __init__(self): self.x = 1class Derived(Base): def __init__(self): self.y = 2Derived().x#ans: AttributeError (no super call)
# call grandparent?class A: def method(self): return "A"class B(A): def method(self): return "B"class C(B): def method(self): return super(B, self).method()C().method()#ans: "A"
# inherit from object?class MyClass: pass#ans: implicitly inherits from objectisinstance(MyClass(), object)#ans: True
# diamond problem?class A: def method(self): return "A"class B(A): passclass C(A): passclass D(B, C): passD().method()#ans: "A" (MRO: D, B, C, A, object)
Google tag (gtag.js)