Python Objects and Classes
Rohit Ramteke
Senior Technical Lead @Birlasoft | DevOps Expert | CRM Solutions | Siebel Administrator | IT Infrastructure Optimization |Project Management
Introduction to Classes and Objects
Python is an object-oriented programming (OOP) language that revolves around objects and classes. This paradigm helps in structuring code in a modular way, making it reusable and scalable.
Let's dive into the fundamental concepts of classes and objects in Python.
Classes
A class is a blueprint or template for creating objects. It defines the structure and behavior that its objects will have. Think of a class as a recipe and objects as the dishes created using that recipe.
Creating Classes
When you create a class, you define attributes (data) and methods (functions) that objects of that class will have. Attributes are variables inside the class, and methods define actions.
For example, a Book class may have attributes like title and author, and methods like read_book().
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def read_book(self):
print(f"Reading '{self.title}' by {self.author}...")
Objects
An object is an instance of a class that represents a real-world entity or concept. It has its own independent attributes and behaviors.
State and Behavior
Every object has two main characteristics:
Instantiating Objects
Once a class is defined, you can create objects (instances) of that class. Each object has its own set of attributes.
my_book = Book("The Great Gatsby", "F. Scott Fitzgerald")
my_book.read_book() # Output: Reading 'The Great Gatsby' by F. Scott Fitzgerald...
Structure of Classes and Objects
Class Declaration
A class is declared using the class keyword and follows CamelCase naming convention.
class ClassName:
pass
Class Attributes
Class attributes are shared among all instances.
class Car:
wheels = 4 # Shared attribute
Constructor Method (__init__)
The __init__ method initializes instance attributes.
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
Instance Attributes
Instance attributes hold unique data for each object.
my_car = Car("Toyota", "Corolla")
print(my_car.brand) # Output: Toyota
Instance Methods
Instance methods operate on the instance's data.
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def display_info(self):
print(f"Car: {self.brand} {self.model}")
Creating Objects
Objects are created by calling the class.
car1 = Car("Honda", "Civic")
car2 = Car("Ford", "Mustang")
Interacting with Objects
Calling Methods
You can call methods using dot notation.
car1.display_info() # Output: Car: Honda Civic
Accessing and Modifying Attributes
Attributes can be accessed and modified directly.
car1.model = "Accord"
print(car1.model) # Output: Accord
Class Attributes Access
Class attributes are shared among all instances.
print(Car.wheels) # Output: 4
Real-World Example
Let's build a Student class to demonstrate these concepts:
class Student:
school = "Greenwood High" # Class Attribute
def __init__(self, name, grade):
self.name = name
self.grade = grade
def study(self):
print(f"{self.name} is studying in grade {self.grade} at {Student.school}.")
Creating Student Objects
student1 = Student("Alice", 10)
student2 = Student("Bob", 12)
Calling Methods
student1.study() # Output: Alice is studying in grade 10 at Greenwood High.
Conclusion
Classes and objects are fundamental to Python's object-oriented programming. Understanding them enables you to write more structured, reusable, and efficient code. Mastering OOP principles helps in building scalable applications with ease!