Python- Day 28- CLASSES

Nidhi Ashtikar
4 min readDec 4, 2024

--

Introduction to Object-Oriented Programming (OOP):

  • OOP is a programming approach where we model real-world things and situations as classes and objects.
  • A class defines the general behavior and properties shared by a category of objects.
  • An object is an instance of a class with unique attributes or characteristics.
  • OOP helps programmers write modular, reusable, and maintainable code.

Creating a Class:

A class defines the blueprint for creating objects. The properties (attributes) and behaviors (methods) that all instances of the class will share are defined here.

Example: Dog Class

class Dog:
"""A simple attempt to model a dog."""

def __init__(self, name, age):
"""Initialize name and age attributes."""
self.name = name # Attribute for storing the dog's name
self.age = age # Attribute for storing the dog's age

def sit(self):
"""Simulate a dog sitting in response to a command."""
print(f"{self.name} is now sitting.")

def roll_over(self):
"""Simulate rolling over in response to a command."""
print(f"{self.name} rolled over!")

There’s a lot to notice here, but don’t worry. We will see all of this,

Understanding the ‘__init__()' Method:

  • __init__() is a special method called automatically when an instance of a class is created.
  • It initializes the attributes (e.g., name, age) of the class, setting up the instance with any necessary data.
  • The self parameter represents the instance itself and allows access to the attributes and methods within the class.

Explanation of the Example Code

  • self.name = name assigns the value of name to the name attribute of the instance, making it accessible to the whole class.

Creating an Instance of a Class:

An instance is a specific object created from a class, representing a unique element of that class.

Example: Creating a Dog Instance

class Dog:
"""A simple attempt to model a dog."""

def __init__(self, name, age):
"""Initialize name and age attributes."""
self.name = name # Attribute for storing the dog's name
self.age = age # Attribute for storing the dog's age

def sit(self):
"""Simulate a dog sitting in response to a command."""
print(f"{self.name} is now sitting.")

def roll_over(self):
"""Simulate rolling over in response to a command."""
print(f"{self.name} rolled over!")


my_dog = Dog('Willie', 6)

print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old.")

>>

My dog's name is Willie.
My dog is 6 years old.

Here, my_dog is an instance of the Dog class with name set to "Willie" and age set to 6.

Calling Methods on an Instance:

Methods are called using dot notation, e.g., instance.method().

Methods defined within a class allow instances to perform specific actions.

Example: Calling sit and roll_over Methods

class Dog:
"""A simple attempt to model a dog."""

def __init__(self, name, age):
"""Initialize name and age attributes."""
self.name = name # Attribute for storing the dog's name
self.age = age # Attribute for storing the dog's age

def sit(self):
"""Simulate a dog sitting in response to a command."""
print(f"{self.name} is now sitting.")

def roll_over(self):
"""Simulate rolling over in response to a command."""
print(f"{self.name} rolled over!")

my_dog = Dog('Willie', 6)

my_dog.sit()
my_dog.roll_over()

>>

Willie is now sitting.
Willie rolled over!

Creating Multiple Instances:

You can create multiple instances of a class, each with unique attributes, representing different elements of the same category.

Example: Creating Multiple Dog Instances

class Dog:
"""A simple attempt to model a dog."""

def __init__(self, name, age):
"""Initialize name and age attributes."""
self.name = name # Attribute for storing the dog's name
self.age = age # Attribute for storing the dog's age

def sit(self):
"""Simulate a dog sitting in response to a command."""
print(f"{self.name} is now sitting.")

def roll_over(self):
"""Simulate rolling over in response to a command."""
print(f"{self.name} rolled over!")



my_dog = Dog('Willie', 6)
your_dog = Dog('Lucy', 3)

print(f"My dog's name is {my_dog.name}.")
print(f"My dog is {my_dog.age} years old.")

my_dog.sit()

print(f"\nYour dog's name is {your_dog.name}.")
print(f"Your dog is {your_dog.age} years old.")
your_dog.sit()

>>

My dog's name is Willie.
My dog is 6 years old.
Willie is now sitting.

Your dog's name is Lucy.
Your dog is 3 years old.
Lucy is now sitting.

Using Classes for Complex Data Handling:

With classes, you can model real-world situations. Each instance represents a unique entity, allowing us to work with multiple instances simultaneously while maintaining their distinct data.

Benefits of OOP:

Each class handles specific functionality, making the code modular.

Classes can be reused across programs or even within the same program to create multiple instances.

By separating concerns, code is easier to read, understand, and maintain.

Classes can be extended or inherited to create new, specialized classes with additional attributes or methods.

Summary

Classes are templates for creating objects.

Objects are specific instances of a class with unique values for their attributes.

Use __init__() for initializing attributes and methods for functionality.

Each instance is distinct, even when created from the same class, allowing for unique data handling and interactions.

This covers the basics of object-oriented programming in Python and the foundational concepts for using classes and objects effectively.

If you found this guide helpful then do click on 👏 the button.

Follow for more Learning like this 😊

If there’s a specific topic you’re curious about, feel free to drop a personal note or comment. I’m here to help you explore whatever interests you!

Thanks for spending your valuable time learning to enhance your knowledge!

--

--

Nidhi Ashtikar
Nidhi Ashtikar

Written by Nidhi Ashtikar

Experienced AWS DevOps professional with a passion for writing insightful articles.

No responses yet