Python Classes and Objects (original) (raw)

Last Updated : 10 Mar, 2025

A class in Python is a user-defined template for creating objects. It bundles data and functions together, making it easier to manage and use them. When we create a new class, we define a new type of object. We can then create multiple instances of this object type.

Classes are created using **class keyword. Attributes are variables defined inside the class and represent the properties of the class. Attributes can be accessed using the dot . operator (e.g., MyClass.my_attribute).

Create a Class

Python `

define a class

class Dog: sound = "bark" # class attribute

`

Create Object

An Object is an instance of a Class. It represents a specific implementation of the class and holds its own data.

Now, let’s create an object from **Dog class.

Python `

class Dog: sound = "bark"

Create an object from the class

dog1 = Dog()

Access the class attribute

print(dog1.sound)

`

**sound attribute is a class attribute. It is shared across all instances of Dog class, so can be directly accessed through instance **dog1.

Using __init__() Function

In Python, class has __init__() function. It automatically initializes object attributes when an object is created.

Python `

class Dog: species = "Canine" # Class attribute

def __init__(self, name, age):
    self.name = name  # Instance attribute
    self.age = age  # Instance attribute

`

**Explanation:

Initiate Object with __init__

Python `

class Dog: species = "Canine" # Class attribute

def __init__(self, name, age):
    self.name = name  # Instance attribute
    self.age = age  # Instance attribute

Creating an object of the Dog class

dog1 = Dog("Buddy", 3)

print(dog1.name) # Output: Buddy print(dog1.species) # Output: Canine

`

**Explanation:

Self Parameter

self parameter is a reference to the current instance of the class. It allows us to access the attributes and methods of the object.

Python `

class Dog: def init(self, name, age):
self.name = name self.age = age

def bark(self): 
    print(f"{self.name} is barking!")

Creating an instance of Dog

dog1 = Dog("Buddy", 3) dog1.bark()

`

**Explanation:

__str__ Method

__str__ method in Python allows us to define a custom string representation of an object. By default, when we print an object or convert it to a string using str(), Python uses the default implementation, which returns a string like <__main__.ClassName object at 0x00000123>.

Python `

class Dog: def init(self, name, age): self.name = name self.age = age

def __str__(self):
    return f"{self.name} is {self.age} years old."  # Correct: Returning a string
  

dog1 = Dog("Buddy", 3) dog2 = Dog("Charlie", 5)

print(dog1)
print(dog2)

`

Output

Buddy is 3 years old. Charlie is 5 years old.

**Explanation:

Class and Instance Variables in Python

In Python, variables defined in a class can be either class variables or instance variables, and understanding the distinction between them is crucial for object-oriented programming.

Class Variables

These are the variables that are shared across all instances of a class. It is defined at the class level, outside any methods. All objects of the class share the same value for a class variable unless explicitly overridden in an object.

Instance Variables

Variables that are unique to each instance (object) of a class. These are defined within __init__ method or other instance methods. Each object maintains its own copy of instance variables, independent of other objects.

**Example:

Python `

class Dog: # Class variable species = "Canine"

def __init__(self, name, age):
    # Instance variables
    self.name = name
    self.age = age

Create objects

dog1 = Dog("Buddy", 3) dog2 = Dog("Charlie", 5)

Access class and instance variables

print(dog1.species) # (Class variable) print(dog1.name) # (Instance variable) print(dog2.name) # (Instance variable)

Modify instance variables

dog1.name = "Max" print(dog1.name) # (Updated instance variable)

Modify class variable

Dog.species = "Feline" print(dog1.species) # (Updated class variable) print(dog2.species)

`

Output

Canine Buddy Charlie Max Feline Feline

**Explanation: