Skip to Content
Course content

5.2 Attributes and Methods

In Python, attributes and methods are essential components of a class. They define the data (attributes) and the behavior (methods) of an object created from that class.

Attributes

Attributes in Python are variables that are defined within a class and hold the state or characteristics of an object. Attributes can either be:

  • Instance attributes: Specific to each instance (object) of the class.
  • Class attributes: Shared among all instances of the class.
Instance Attributes

Instance attributes are defined within the __init__ method of a class and are specific to each object. They are initialized with unique values when the object is created.

Example:
class Dog:
    def __init__(self, name, breed, age):
        self.name = name  # Instance attribute
        self.breed = breed  # Instance attribute
        self.age = age  # Instance attribute

# Creating an object (instance) of the Dog class
dog1 = Dog("Buddy", "Golden Retriever", 3)
dog2 = Dog("Bella", "Labrador", 5)

# Accessing instance attributes
print(dog1.name)  # Output: Buddy
print(dog2.age)  # Output: 5

Here, name, breed, and age are instance attributes, each specific to the individual object (dog1, dog2).

Class Attributes

Class attributes are shared among all instances of the class. These are defined outside the __init__ method and hold values that should be consistent across all objects of the class.

Example:
class Dog:
    species = "Canine"  # Class attribute

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

# Creating objects
dog1 = Dog("Buddy", "Golden Retriever", 3)
dog2 = Dog("Bella", "Labrador", 5)

# Accessing class attribute
print(dog1.species)  # Output: Canine
print(dog2.species)  # Output: Canine

Here, species is a class attribute, and all Dog objects share the same value of "Canine".

Methods

Methods are functions defined inside a class that define the behaviors of an object. They can access and modify the attributes of the object and perform actions related to the object’s state.

Methods typically have self as their first parameter. The self keyword refers to the current object instance and allows access to its attributes and other methods.

Instance Methods

Instance methods are functions defined inside the class that operate on the attributes of a specific instance (object). They can modify instance attributes and perform actions using the data within an object.

Example:
class Dog:
    def __init__(self, name, breed, age):
        self.name = name
        self.breed = breed
        self.age = age

    # Instance method to display dog details
    def display_info(self):
        print(f"{self.name} is a {self.age} years old {self.breed}.")

    # Instance method to simulate barking
    def bark(self):
        print(f"{self.name} is barking!")

# Creating an object (instance) of the Dog class
dog1 = Dog("Buddy", "Golden Retriever", 3)

# Calling instance methods
dog1.display_info()  # Output: Buddy is a 3 years old Golden Retriever.
dog1.bark()  # Output: Buddy is barking!

Here, display_info() and bark() are instance methods. They can access and modify the object's attributes (like name and breed) and define actions for the object.

Class Methods

Class methods are defined with the @classmethod decorator and take cls as their first parameter (referring to the class, not an instance). They are used to access or modify class attributes and work with the class itself rather than with individual objects.

Example:
class Dog:
    species = "Canine"  # Class attribute

    def __init__(self, name, breed, age):
        self.name = name
        self.breed = breed
        self.age = age

    # Class method to change the species
    @classmethod
    def change_species(cls, new_species):
        cls.species = new_species
        print(f"Species updated to: {cls.species}")

# Creating objects
dog1 = Dog("Buddy", "Golden Retriever", 3)

# Calling the class method
dog1.change_species("Feline")  # Output: Species updated to: Feline

Here, change_species() is a class method that modifies the class attribute species.

Static Methods

Static methods are methods that do not depend on instance or class attributes. They are independent of the class and can be called without creating an object. Static methods are defined using the @staticmethod decorator.

Example:
class Dog:
    # Static method to check if a dog is adult
    @staticmethod
    def is_adult(age):
        return age >= 2

# Calling the static method without creating an object
print(Dog.is_adult(3))  # Output: True

In this case, is_adult() is a static method that checks if the dog is an adult based on its age, and it does not access any class or instance attributes.

Summary

  • Attributes define the state of an object. They can be instance attributes (specific to an object) or class attributes (shared by all objects).
  • Methods define the behavior of an object. They can be instance methods (operate on an object), class methods (operate on the class), or static methods (independent of the class and objects).
  • Use self to access instance attributes and methods inside a class.
  • Class methods modify class-level attributes, while static methods are independent of the class and do not interact with object or class attributes.

Commenting is not enabled on this course.