super(), & MROInheritance allows a child class (subclass) to inherit attributes and methods from a parent class (superclass), promoting code reuse and polymorphic method overriding.
flowchart TD
Base["Base Class (Animal)"] --> Child1["Subclass 1 (Dog)"]
Base --> Child2["Subclass 2 (Cat)"]
Child1 --> Overridden["Method Override (.speak())"]
Child2 --> Overridden2["Method Override (.speak())"]
super(): Returns a proxy object delegating method calls to a parent class.Class.mro(): Inspects the Method Resolution Order algorithm (C3 Linearization) used by CPython to resolve class attributes.from typing import List
class User:
def __init__(self, username: str, email: str) -> None:
self.username = username
self.email = email
def get_permissions(self) -> List[str]:
return ["read_content"]
def __repr__(self) -> str:
return f"User({self.username!r})"
class AdminUser(User):
"""Subclass extending Base User with elevated administrative roles."""
def __init__(self, username: str, email: str, admin_level: int) -> None:
super().__init__(username, email) # Invoke parent constructor cleanly
self.admin_level = admin_level
# Overriding method
def get_permissions(self) -> List[str]:
base_permissions = super().get_permissions()
return base_permissions + ["write_content", "delete_users", "manage_system"]
if __name__ == "__main__":
standard_user = User("alice", "[email protected]")
admin_user = AdminUser("bob_admin", "[email protected]", admin_level=1)
print(f"Standard Permissions: {standard_user.get_permissions()}")
print(f"Admin Permissions: {admin_user.get_permissions()}")
print("Method Resolution Order (MRO):", AdminUser.mro())
super().__init__(): In subclasses, call super().__init__(...) to ensure parent state is properly initialized.issubclass(): Use issubclass(Child, Parent) or isinstance(obj, Parent) for dynamic type verification.Create a base class Vehicle(max_speed) and a subclass ElectricCar(max_speed, battery_capacity) that calls super().__init__() and adds a charge() method.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With