Python Classes and Objects

Python is an amazing programming language that supports both the functional programming paradigm and object-oriented programming paradigm.
Python's object-oriented programming system supports all the four fundamental features of a general OOPS framework: encapsulation, abstraction, inheritance and polymorphism.
What is a Class and an Object?
  • A class is a bundle of instance variables and related methods meant for defining a type of object viewed as a blueprint or a template of the objects.
  • An object is an instance of a class with a specific set of attributes.
  • Class Definition Syntax
    To create a class, use the keyword class as shown below
    class ClassName:
        <statement-1>
    
        <statement-N>
    Object Types
    1.Class Objects
    From python documentation;
    Class objects support two kinds of operations: attribute references and instantiation.
    Attribute references use the standard syntax used for all attribute references in Python: obj.name.
  • Valid attribute names are all the names that were in the class’s namespace when the class object was created. Example:
  • class Student:
        """A simple example class"""
        rollno = 12
        name = "Korir"
    def messg(self):
            return 'New Session will start soon.'
  • From the above example, Student.roll_no, Student.name are valid attribute references, returning an 12 and 'Korir' respectively.
    Student.messg returns a function object.

  • In Python self is a name for the first argument of a method which is different from ordinary function. Rather than passing the object as a parameter in a method the word self refers to the object itself.

  • Instantiation uses function notation.
    To create an instance of a class, you call the class as if it were a function. The example below creates a new instance of the class and assigns this object to the local variable x.
    x = Student()
  • The instantiation operation creates an empty object. Therefore a class may define a special method named init(), like this:
  • def __init__(self):
        self.data = []
    __ init __() method may have arguments for greater flexibility for example:
    class Student:
        """A simple example class"""
        def __init__(self,sroll, sname):
            self.r = sroll
            self.n = sname
        x = Student(10, 'Korir')
     x.r, x.n
    Output
    (10, 'Korir')
    2.Instance Objects
  • The only operations understood by instance objects are attribute references. There are two kinds of valid attribute names: data attributes and methods.
  • Data attributes correspond to instance variables and need not be declared; like local variables, they spring into existence when they are first assigned to.
    A method is a function that belongs to an object.
    Valid method names of an instance object depend on its class. By definition, all attributes of a class that are function objects define corresponding methods of its instances.
    From our example;
    x.messg is a valid method reference, since Student.messg is a function.
    3.Method Objects
  • Usually, a method is called right after it is bound:
  • x.messg()
  • In the Student example, this will return the string 'New Session will start soon'.
  • Class and Instance Attributes
    Instance attribute
  • An instance attribute is a Python variable belonging to only one object.
  • It is only accessible in the scope of the object and it is defined inside the constructor function of a class. For example:
  • class Circle:
        def __ init __(self, radius):
            self.pi = 3.14159
            self.radius = radius
    
        def area(self):
            return self.pi * self.radius**2
    
        def circumference(self):
            return 2*self.pi * self.radius
  • Both pi and radius are called instance attributes. Since they belong to a specific instance of the Circle class.
  • Class Attribute
  • A class attribute is a Python Variable that belongs to a class rather than a particular object.
  • It is shared between all other objects of the same class and is defined outside the constructor function __ init __(self,…), of the class. Example:
  • class Circle:
        pi = 3.14159
    
        def __init__(self, radius):
            self.radius = radius
    
        def area(self):
            return self.pi * self.radius**2
    
        def circumference(self):
            return 2 * self.pi * self.radius
  • The above example defines pi as a class attribute
  • You can access the class attribute via instances of the class or via the class name:
  • object_name.class_attribute
    class_name.class_attribute
    From class attribute example;
    c = Circle(10)
    print(c.pi)
    print(Circle.pi)
    Output will be;
    3.14159
    3.14159
    Inheritance
  • Like other object-oriented language, Python allows inheritance from a parent (or base) class as well as multiple inheritances in which a class inherits attributes and methods from more than one parent.
  • The concept of inheritance provides an important feature to the object-oriented programming is reuse of code
  • The syntax for single inheritance is:
  • class DerivedClassName(BaseClassName):
        <statement-1>
    
        <statement-N>
  • Below is a simple example of single inheritance in python.
  • class Parent():
           def first(self):
               print('first function')
    
    class Child(Parent):
           def second(self):
              print('second function')
    
    ob = Child()
    ob.first()
    ob.second()
    Here's the output:
    first function
    second function
  • From the above code, you can access the parent class function using the child class object.
  • Sub-classing
  • Calling a constructor of the parent class by mentioning the parent class name in the declaration of the child class is known as sub-classing. A child class identifies its parent class by sub-classing.

  • Other types of inheritance are;

  • Multiple Inheritance-When a child class inherits from more than one parent class.
    Multilevel Inheritance-When a child class becomes a parent class for another child class.
    Hybrid Inheritance- involves multiple inheritance from the same base or parent class.
    Hierarchical Inheritance-involves multiple inheritance taking place in a single program.

    26

    This website collects cookies to deliver better user experience

    Python Classes and Objects