Object-Oriented Programming (OOP) is a programming paradigm that organizes software design around "objects" rather than functions and logic. An object is an instance of a class, which encapsulates data (attributes) and behavior (methods). OOP promotes code reusability, modularity, and scalability.
A class is a blueprint for creating objects. It defines the attributes and methods that the objects will have. An object is an instance of a class.
Example:
class Dog: # Class attribute (shared by all instances) species = "Canis familiaris" # Constructor method (initializes object attributes) def __init__(self, name, age): self.name = name # Instance attribute self.age = age # Instance attribute # Instance method def bark(self): return f"{self.name} says woof!" # Creating objects (instances of the Dog class) dog1 = Dog("Buddy", 3) dog2 = Dog("Max", 5) print(dog1.bark()) # Output: Buddy says woof! print(dog2.species) # Output: Canis familiaris
In this example, Dog
is a class, and dog1
and dog2
are objects (instances) of that class. Each object has its own attributes (name
and age
) and can call the bark
method.
Inheritance allows a class (child class) to inherit attributes and methods from another class (parent class). This promotes code reuse and hierarchical classification.
Example:
# Parent class class Animal: def __init__(self, name): self.name = name def speak(self): return f"{self.name} makes a sound." # Child class inheriting from Animal class Cat(Animal): def speak(self): return f"{self.name} says meow!" # Creating an instance of the Cat class cat = Cat("Whiskers") print(cat.speak()) # Output: Whiskers says meow!
Here, the Cat
class inherits from the Animal
class and overrides the speak
method to provide its own implementation.
Encapsulation is the concept of restricting access to certain attributes or methods to prevent unintended modifications. In Python, this is achieved using private and protected members.
__
) and cannot be accessed directly outside the class._
) and are intended for internal use but can still be accessed.Example:
class BankAccount: def __init__(self, owner, balance): self.owner = owner self.__balance = balance # Private attribute def deposit(self, amount): if amount > 0: self.__balance += amount def get_balance(self): return self.__balance # Accessing private attribute via a method account = BankAccount("Alice", 1000) account.deposit(500) print(account.get_balance()) # Output: 1500 # print(account.__balance) # This would raise an AttributeError
Encapsulation ensures that the __balance
attribute is not directly modified, maintaining data integrity.
Polymorphism allows objects of different classes to be treated as objects of a common superclass. It enables methods to behave differently based on the object calling them.
Example:
class Bird: def fly(self): return "This bird can fly." class Penguin(Bird): def fly(self): return "This bird cannot fly." # Function demonstrating polymorphism def bird_flying_test(bird): print(bird.fly()) # Creating instances sparrow = Bird() penguin = Penguin() bird_flying_test(sparrow) # Output: This bird can fly. bird_flying_test(penguin) # Output: This bird cannot fly.
Here, the fly
method behaves differently depending on whether it’s called by a Bird
or Penguin
object.
Abstraction involves hiding complex implementation details and exposing only the necessary features of an object. In Python, abstraction is often achieved using abstract base classes (ABCs) from the abc
module.
Example:
from abc import ABC, abstractmethod # Abstract base class class Shape(ABC): @abstractmethod def area(self): pass # Concrete class implementing the abstract method class Circle(Shape): def __init__(self, radius): self.radius = radius def area(self): return 3.14 * self.radius ** 2 circle = Circle(5) print(circle.area()) # Output: 78.5
The Shape
class defines an abstract method area
, which must be implemented by any subclass like Circle
.
By understanding and applying these OOP concepts, you can write cleaner, more organized, and reusable Python code.
05/10/2024 | Python
15/10/2024 | Python
05/11/2024 | Python
14/11/2024 | Python
26/10/2024 | Python
26/10/2024 | Python
05/10/2024 | Python
14/11/2024 | Python
26/10/2024 | Python
26/10/2024 | Python
15/01/2025 | Python
15/10/2024 | Python