Python is a fully object-oriented programming language but it can also be used for scripting. It is assumed that you are already familiar with object-orientation concepts and have experience writing object-oriented code in another language. This page will show how to write object-oriented code in Python without explaining object-oriented concepts.
The following class computes the area of a rectangle. Classes are defined with class keyword. init is the constructor. length and width are initialized in the constructor. Area is calculated by calcArea().
# class definition class Rectangle(): # constructor def __init__(self, length, width): self.length = length self.width = width # calculate area def calcArea(self): return self.length * self.width # run the code r = Rectangle(23, 32) print(r.calcArea()) # output = 736
To use the class, we first create and object, r and then call r.calcArea() function.
Following example shows how to use inheritance in Python3.
class Vehicle(): def __init__(self, make, model): self.make = make self.model = model def __str__(self): return self.make + " " + self.model class Car(Vehicle): def __init__(self, make, model, wheels): Vehicle.__init__(self, make, model) self.wheels = wheels def __str__(self): return Vehicle.__str__(self) + " has " + self.wheels + " wheels" v = Vehicle('Toyota','Corolla') print(v) m = Car('Toyota','Corolla','four') print(m)
Toyota Corolla Toyota Corolla has four wheels
Vehicle is the base class. Car is the subclass. Note that declaration of the class Car takes superclass name as input parameter. Also note the use of Vehicle.init in Car class to initialize superclass variables and the use of Vehicle.str(self) in the str method to print values from superclass.
Polymorphism basically refers to the same method call doing different things for different subclasses. In the following example, seats() method returns different results based on which subclass is called. The property name in the super class is used by all subclasses.
class Vehicle(): def __init__(self, name): self.name = name # abstract method def seats(self): raise NotImplementedError("Subclass must implement abstract method") class Sedan(Vehicle): def seats(self): return '4' class Minivan(Vehicle): def seats(self): return '7' class Motorbike(Vehicle): def seats(self): return '2' vehicles = [Sedan('Tesla Model S'), Minivan('Toyota Sedona'), Motorbike('Harley Davidson')] for vehicle in vehicles: print(vehicle.name + ' has ' + vehicle.seats() + ' seats')
Tesla Model S has 4 seats Toyota Sedona has 7 seats Harley Davidson has 2 seats