Python Object Oriented Programming

peter-yelton

Peter Yelton

Posted on June 12, 2023

Python Object Oriented Programming

Python is a high-level, interpreted programming language known for simple, easy to read code. Python emphasizes code readability, making it easier for programmers to express their ideas and concepts in a clear and concise manner. It has several paradigms for structuring code. One paradigm is object-oriented programming (OOP) which allows developers to organize code around objects that encapsulate data and behavior. This paradigm facilitates flexible, reusable code.

At the core of object-oriented programming in Python are objects and classes. An object represents a specific entity with its attributes and methods. A class, servers as a blueprint for creating objects. It defines the common attributes and behaviors that the objects of that class will possess.

# Example: Creating a class and an object

class Car:
    def __init__(self, brand, color):
        self.brand = brand
        self.color = color

    def drive(self):
        print(f"The {self.color} {self.brand} is driving.")

my_car = Car("Toyota", "blue")
my_car.drive()

Enter fullscreen mode Exit fullscreen mode

On of the fundamental principles of object-oriented programming is encapsulation, which involves bundling data and related methods with a class. Encapsulation provides data security and maintains code integrity by preventing direct access to the data from outside the class. additionally, encapsulation allows for abstraction, where the internal details of an object are hidden, exposing only the essential features and interactions. This promotes modularity and reduces code complexity.

# Example: Encapsulation and Abstraction

class BankAccount:
    def __init__(self, account_number, balance):
        self.account_number = account_number
        self.balance = balance

    def deposit(self, amount):
        self.balance += amount

    def withdraw(self, amount):
        if self.balance >= amount:
            self.balance -= amount
        else:
            print("Insufficient funds.")

    def get_balance(self):
        return self.balance

my_account = BankAccount("123456789", 1000)
my_account.deposit(500)
my_account.withdraw(200)
print(my_account.get_balance())

Enter fullscreen mode Exit fullscreen mode

Encapsulation is displayed in the way the data (account_number and balance) is encapsulated within the class. The class defines attributes (account_number and balance) using the self keyword, which allows access to these attributes within the class methods. The attributes are not directly accessible from outside the class, ensuring data security and integrity.

Abstraction is showcased by the use of methods (deposit, withdraw, and get_balance) that provide an interface to interact with the encapsulated data. The internal details of how the balance is updated or how the withdrawal is handled are abstracted away. Users of the class only need to understand and interact with the provided methods, hiding the implementation complexities.

Inheritance is a concept in OOP that enables the creation of new classes based on existing ones. In Python, a derived class can inherit properties (attributes and methods) from a base class, allowing for code reuse and promoting a hierarchical organization of code.

# Example: Inheritance

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        return "Hello"

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

my_dog = Dog("Buddy")
my_cat = Cat("Whiskers")
print(my_dog.speak())
print(my_cat.speak())

Enter fullscreen mode Exit fullscreen mode

Inheritance is showcased by the 'Dog' and 'Cat' classes, which inherit from the base class 'Animal'. By inheriting from 'Animal', the derived classes ('Dog and 'Cat')gain access to the attributes and methods defined in the base class. In this case, both 'Dog' and 'Cat' inherit the 'name' attributed and the abstract 'speak' method from 'Animal'.

Polymorphism is observed in the code when the 'speak' method is overridden in the derived classes. Both 'Dog' and 'Cat' have their own implementation of the 'speak' method, which overrides the implementation inherited from 'Animal'. This allows objects of different class (both derived from 'Animal') to be used interchangeable, based on their shared interface ('speak' method) or inheritance hierarchy.

Python's object-oriented programming paradigm provide an efficient and flexible approach to structure code. By using these concepts, developers can create modular, reusable, and maintainable code. Python's syntax and library support make it a great choice for implementing Object Oriented Programming. Embracing these concepts in Python allow developers to build complex applications while promoting code organization and scalability.

💖 💪 🙅 🚩
peter-yelton
Peter Yelton

Posted on June 12, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related