KEMBAR78
Inheritance_in_OOP_using Python Programming | PPTX
Inheritance in Object-Oriented
Programming (OOP)
Understanding Classes, Objects, and Inheritance
in Python
Abigail Judith
Date
Introduction to OOP and Inheritance
Object-Oriented Programming (OOP):
- Focuses on objects that interact with each other.
- Concepts include classes, objects, inheritance, polymorphism,
encapsulation, and abstraction.
Inheritance:
- Inheritance is the mechanism that allows one class (child) to
inherit attributes and methods from another class (parent).
- Benefits of inheritance: Reusability, Extensibility, Improved code
organization.
Why Use Inheritance?
- Reusability: Child classes can reuse code from
the parent class, avoiding duplication.
- Extensibility: Child classes can extend the
functionality of parent classes.
- Simplifies Maintenance: Changes to the parent
class automatically reflect in the child classes.
Types of Inheritance
- Single Inheritance: A child class inherits from one parent class.
Example: class Dog(Animal):
- Multiple Inheritance: A child class inherits from more than one
parent class.
Example: class Dog(Mammal, Animal):
- Multilevel Inheritance: A class inherits from a class, which is itself
derived from another class.
Example: class Puppy(Dog):
Inheritance Syntax
Basic Syntax:
class ParentClass:
def __init__(self):
pass
def method_in_parent(self):
pass
class ChildClass(ParentClass): # Inherits from ParentClass
def __init__(self):
super().__init__() # Calls the constructor of ParentClass
pass
def method_in_child(self):
pass
Creating Objects for the Class
Class Object Instantiation:
When a class is defined, you can create objects (instances) of the class to
access its methods and attributes.
Example:
class Animal:
def __init__(self, name):
self.name = name
# Creating an object of Animal class
animal = Animal("Lion")
print(animal.name) # Output: Lion
Demonstrating Inheritance with Example
Parent Class:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} makes a sound")
Child Class:
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
def speak(self):
print(f"{self.name} barks")
Creating Objects for the Child Class:
dog = Dog("Buddy", "Golden Retriever")
dog.speak() # Output: Buddy barks
# Parent class
class Parent:
def __init__(self):
self.parent_var = "I am a Parent variable"
def parent_method(self):
print("This is a method from Parent class")
# First Child class
class Child1(Parent):
def child1_method(self):
print("This is a method from Child1 class")
# Second Child class
class Child2(Parent):
def child2_method(self):
print("This is a method from Child2 class")
# Creating objects of child classes
obj1 = Child1()
obj2 = Child2()
# Accessing Parent class properties and methods
print(obj1.parent_var) # Accessing Parent's variable
obj1.parent_method() # Calling
class Animal:
def move(self):
print('Animals can move')
class Bird:
def fly(self):
print('Birds can fly')
class Bat(Animal, Bird):
def sound(self):
print('Bats make high-pitched sounds')
bat = Bat()
bat.move()
bat.fly()
bat.sound()
Python follows MRO when resolving
methods.
- The `__mro__` attribute shows the method
lookup order.
- Example:
print(Bat.__mro__)
Output:
(<class 'Bat'>, <class 'Animal'>, <class 'Bird'>,
<class 'object'>)
Method Overriding in Inheritance
Definition: The child class can provide its own implementation of a method that is already
defined in the parent class.
Example:
class Animal:
def speak(self):
print("Animal makes a sound")
class Dog(Animal):
def speak(self):
print("Dog barks")
animal = Animal()
animal.speak() # Output: Animal makes a sound
dog = Dog()
dog.speak() # Output: Dog barks
Super Function and Inheritance
The super() function is used to call methods from the parent class.
This is particularly useful in the child class constructor to call the parent class's __init__()
method.
Example:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} makes a sound")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Call the parent class constructor
self.breed = breed
def speak(self):
print(f"{self.name} barks")
dog = Dog("Buddy", "Golden Retriever")
dog.speak() # Output: Buddy barks
Private and Protected Attributes in
Inheritance
Private Attributes:
- Private attributes (using __) are not accessible outside the class, even in subclasses.
Example:
class Animal:
def __init__(self, name):
self.__name = name # Private attribute
def get_name(self):
return self.__name
class Dog(Animal):
def __init__(self, name):
super().__init__(name)
dog = Dog("Buddy")
print(dog.get_name()) # Access private attribute via public method
Access Modifiers in Inheritance
• Public Attributes: Accessible from anywhere.
• Protected Attributes: Indicated by a single
underscore (_), meant for internal use within a
class or subclass.
• Private Attributes: Indicated by double
underscores (__), not directly accessible
outside the class or subclass.
Inheritance in Action - Example
Parent Class:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} makes a sound")
Child Class:
class Dog(Animal):
def speak(self):
print(f"{self.name} barks")
class Cat(Animal):
def speak(self):
print(f"{self.name} meows")
dog = Dog("Buddy")
cat = Cat("Kitty")
dog.speak() # Buddy barks
cat.speak() # Kitty meows
Conclusion
- Inheritance allows one class to acquire
attributes and methods from another.
- It promotes code reuse and provides a way to
extend or modify functionality.
- You can override methods in the child class and
use super() to call the parent class's methods.
Q&A
• Open floor for questions and clarifications.

Inheritance_in_OOP_using Python Programming

  • 1.
    Inheritance in Object-Oriented Programming(OOP) Understanding Classes, Objects, and Inheritance in Python Abigail Judith Date
  • 2.
    Introduction to OOPand Inheritance Object-Oriented Programming (OOP): - Focuses on objects that interact with each other. - Concepts include classes, objects, inheritance, polymorphism, encapsulation, and abstraction. Inheritance: - Inheritance is the mechanism that allows one class (child) to inherit attributes and methods from another class (parent). - Benefits of inheritance: Reusability, Extensibility, Improved code organization.
  • 3.
    Why Use Inheritance? -Reusability: Child classes can reuse code from the parent class, avoiding duplication. - Extensibility: Child classes can extend the functionality of parent classes. - Simplifies Maintenance: Changes to the parent class automatically reflect in the child classes.
  • 4.
    Types of Inheritance -Single Inheritance: A child class inherits from one parent class. Example: class Dog(Animal): - Multiple Inheritance: A child class inherits from more than one parent class. Example: class Dog(Mammal, Animal): - Multilevel Inheritance: A class inherits from a class, which is itself derived from another class. Example: class Puppy(Dog):
  • 5.
    Inheritance Syntax Basic Syntax: classParentClass: def __init__(self): pass def method_in_parent(self): pass class ChildClass(ParentClass): # Inherits from ParentClass def __init__(self): super().__init__() # Calls the constructor of ParentClass pass def method_in_child(self): pass
  • 6.
    Creating Objects forthe Class Class Object Instantiation: When a class is defined, you can create objects (instances) of the class to access its methods and attributes. Example: class Animal: def __init__(self, name): self.name = name # Creating an object of Animal class animal = Animal("Lion") print(animal.name) # Output: Lion
  • 7.
    Demonstrating Inheritance withExample Parent Class: class Animal: def __init__(self, name): self.name = name def speak(self): print(f"{self.name} makes a sound") Child Class: class Dog(Animal): def __init__(self, name, breed): super().__init__(name) self.breed = breed def speak(self): print(f"{self.name} barks") Creating Objects for the Child Class: dog = Dog("Buddy", "Golden Retriever") dog.speak() # Output: Buddy barks
  • 8.
    # Parent class classParent: def __init__(self): self.parent_var = "I am a Parent variable" def parent_method(self): print("This is a method from Parent class") # First Child class class Child1(Parent): def child1_method(self): print("This is a method from Child1 class") # Second Child class class Child2(Parent): def child2_method(self): print("This is a method from Child2 class") # Creating objects of child classes obj1 = Child1() obj2 = Child2() # Accessing Parent class properties and methods print(obj1.parent_var) # Accessing Parent's variable obj1.parent_method() # Calling
  • 9.
    class Animal: def move(self): print('Animalscan move') class Bird: def fly(self): print('Birds can fly') class Bat(Animal, Bird): def sound(self): print('Bats make high-pitched sounds') bat = Bat() bat.move() bat.fly() bat.sound()
  • 10.
    Python follows MROwhen resolving methods. - The `__mro__` attribute shows the method lookup order. - Example: print(Bat.__mro__) Output: (<class 'Bat'>, <class 'Animal'>, <class 'Bird'>, <class 'object'>)
  • 11.
    Method Overriding inInheritance Definition: The child class can provide its own implementation of a method that is already defined in the parent class. Example: class Animal: def speak(self): print("Animal makes a sound") class Dog(Animal): def speak(self): print("Dog barks") animal = Animal() animal.speak() # Output: Animal makes a sound dog = Dog() dog.speak() # Output: Dog barks
  • 12.
    Super Function andInheritance The super() function is used to call methods from the parent class. This is particularly useful in the child class constructor to call the parent class's __init__() method. Example: class Animal: def __init__(self, name): self.name = name def speak(self): print(f"{self.name} makes a sound") class Dog(Animal): def __init__(self, name, breed): super().__init__(name) # Call the parent class constructor self.breed = breed def speak(self): print(f"{self.name} barks") dog = Dog("Buddy", "Golden Retriever") dog.speak() # Output: Buddy barks
  • 13.
    Private and ProtectedAttributes in Inheritance Private Attributes: - Private attributes (using __) are not accessible outside the class, even in subclasses. Example: class Animal: def __init__(self, name): self.__name = name # Private attribute def get_name(self): return self.__name class Dog(Animal): def __init__(self, name): super().__init__(name) dog = Dog("Buddy") print(dog.get_name()) # Access private attribute via public method
  • 14.
    Access Modifiers inInheritance • Public Attributes: Accessible from anywhere. • Protected Attributes: Indicated by a single underscore (_), meant for internal use within a class or subclass. • Private Attributes: Indicated by double underscores (__), not directly accessible outside the class or subclass.
  • 15.
    Inheritance in Action- Example Parent Class: class Animal: def __init__(self, name): self.name = name def speak(self): print(f"{self.name} makes a sound") Child Class: class Dog(Animal): def speak(self): print(f"{self.name} barks") class Cat(Animal): def speak(self): print(f"{self.name} meows") dog = Dog("Buddy") cat = Cat("Kitty") dog.speak() # Buddy barks cat.speak() # Kitty meows
  • 16.
    Conclusion - Inheritance allowsone class to acquire attributes and methods from another. - It promotes code reuse and provides a way to extend or modify functionality. - You can override methods in the child class and use super() to call the parent class's methods.
  • 17.
    Q&A • Open floorfor questions and clarifications.