Python Tutorials
Python File Handling
Python Modules
Inheritance allows us to define a category that inherits all methods and structures in another category.
The parent category is the inherited category, also called the base class.
A children's class is a class that benefits from another class, also called an derived class.
Any class can be a parent class, so syntax is the same as creating any other category:
Create a class named Person, with firstname and lastname properties, and a printname method:
            class Person:
  def __init__(self, fname, lname):
    
              self.firstname = fname
    self.lastname = lname
  
              def printname(self):
    print(self.firstname, 
              self.lastname)
#Use the Person class to create an object, and then 
              execute the printname method:
x = Person("John", "Doe")
              x.printname() 
    To create a legacy class to work in another class, submit the parent category as a parameter when creating a child class:
Create a class named Student, which will inherit the properties and methods from the Person class:
            class Student(Person):
  pass 
    Note: Use a pass if you do not want to add other features or methods to the class.
The student class now has the same features and methods as the Man class.
Use the Student class to create an object, and then execute the printname method:
          x = Student("Mike", "Olsen")
x.printname() 
    So far we have built a children's classroom that inherits buildings and structures from its parent.
We want to add __init __ () function to the children's class (instead of a pass key).
Note: The __ init __ () function is automatically called every time a class is used to create something new.
Add the __init__() function to the Student class:
          class Student(Person):
  def __init__(self, fname, lname):
    
          #add properties etc. 
    If you add __init __ () function, the child category will no longer inherit parent __init __ () function.
Note: A child's __init __() function exceeds the parent __init __() parent's legacy.
To save a parent __init __() parent's job asset, add a call to the parent __init __() parent:
          class Student(Person):
  def __init__(self, fname, lname):
    
          Person.__init__(self, fname, lname) 
    We have now successfully added the __init __ () function, and saved the parental legacy, and are ready to add functionality to __init __() function.
Python also has a super() functionality that will enable the kids category to benefit from all the features and structures from its parent:
          class Student(Person):
  def __init__(self, fname, lname):
    
            super().__init__(fname, lname) 
    By using the super() function, you do not need to use the parent element name, it will automatically acquire methods and structures from its parent.
Add a property called graduationyear to the Student class:
          class Student(Person):
  def __init__(self, fname, lname):
    
          super().__init__(fname, lname)
    self.graduationyear 
          = 2019 
    In the example below, the year 2019 should be flexible, and move beyond the Student body when creating student items. To do so, add another parameter to __ init __ () function:
Add a year parameter, and pass the correct year when creating objects:
          class Student(Person):
  def __init__(self, fname, lname, year):
    
          super().__init__(fname, lname)
    self.graduationyear 
          = year
x = Student("Mike", "Olsen", 2019) 
    Add a method called welcome to the Student class:
          class Student(Person):
  def __init__(self, fname, lname, year):
    
          super().__init__(fname, lname)
    self.graduationyear 
          = year
  def welcome(self):
    print("Welcome", 
          self.firstname, self.lastname, "to the class of", self.graduationyear) 
    If you add a path to a child class with the same name as the parent category function, the parent path path inheritance will be removed.