Python Special Variable Name Tutorial – Complete Guide

Welcome to our next adventure in Python learning — a dive into the realm of Python Special Variable Names. This intriguing aspect of Python coding is often overlooked, yet it brings essential functionality to your programming journey. Brace yourself as we decode these unique variables and why they’re a powerful tool in your Python arsenal!

What Are Python Special Variable Names?

To put it simply, Python Special Variable Names are a particular kind of identifier characterized by their surrounding double underscores, like __main__. These are not mere decorative punctuation; they hold a special status in Python’s internal working.

Often referred to as ‘dunder’ variables (derived from ‘double underscore’), these Python specific special variables provide a way to customize and manipulate Python’s behavior in many ways. From object creation to defining the string representation of a class, these dunder variables are the torchbearers of customization in Python.

As you voyage deeper into Python programming, the power of these special variables becomes evident. They help customize the functionality of class objects, pave the way for operator overloading, and even dictate a module’s interaction with Python’s runtime environment. Grasping this tool can significantly enhance your coding efficiency and potential.

CTA Small Image

Interacting with Python Special Variable Names

Let’s now look at examples of some of the most common Python Special Variable names and how they are used.

1. The __name__ Variable

The __name__ variable lets you check whether your script is being run on its own or imported from another module. Here’s how it works:

# '' file
def hello_world():
    print("Hello, World!")

if __name__ == "__main__":

If you run this module directly, the __name__ variable equals “__main__”, so the function hello_world() gets called. But if you import it from another module, __name__ equals “my_module”, so the hello_world function won’t get called unless you specifically call it.

2. __init__ and __del__ Variables

The __init__ variable lets you run code when an object is created from a class, while __del__ allows you to execute code when an object is destroyed.

class MyClass:
    def __init__(self):
        print("Object created!")

    def __del__(self):
        print("Object deleted!")

obj = MyClass()  # prints: Object created!
del obj  # prints: Object deleted!

3. __str__ and __repr__ Variables

The __str__ and __repr__ variables allow you to customize how objects are represented as strings. The __str__ method is used when we print an object, while __repr__ is used when we call repr() on an object.

class MyClass:
    def __str__(self):
        return "This is a MyClass instance!"

    def __repr__(self):
        return "MyClass()"

obj = MyClass()
print(obj)  # This is a MyClass instance!
print(repr(obj))  # MyClass()

Overriding Python Special Variables

You can also override Python’s built-in methods using these special variables. However, use this power wisely – too much modification can make your code confusing to others!

1. Overriding Arithmetical Operators

Here’s an example where we override the ‘+’ operator (__add__) to concatenate the values of two class objects.

class MyClass:
    def __init__(self, value):
        self.value = value

    def __add__(self, other):
        return self.value + other.value

obj1 = MyClass("Hello, ")
obj2 = MyClass("World!")
print(obj1 + obj2)  # Hello, World!

2. Overriding Equality Operators

An example of overriding the ‘==’ operator (__eq__) to compare whether the values of two objects are the same.

class MyClass:
    def __init__(self, value):
        self.value = value

    def __eq__(self, other):
        return self.value == other.value

obj1 = MyClass(5)
obj2 = MyClass(5)
print(obj1 == obj2)  # True

Understanding and using these variables can drastically increase the versatility and expressiveness of your Python code. Happy coding!

More on Python Special Variable Names

Let’s continue to delve into the magic of Python Special Variable names by exploring more examples, further unraveling the potential of these variables.

1. The __doc__ Variable

The __doc__ variable is a built-in variable that returns the docstring defined within the class, module, method, or function. This can be tremendously useful when you’re dealing with external libraries or code you didn’t write yourself.

def add(a, b):
    """This function adds two numbers and returns the result."""
    return a + b

print(add.__doc__)  # This function adds two numbers and returns the result.

2. __len__ Variable

The __len__ variable is used to override the len() method. This can allow you to define custom behavior for the len() function on your objects.

class MyClass:
    def __len__(self):
        return 42

obj = MyClass()
print(len(obj))  # 42

3. __getitem__ and __setitem__ Variables

You can make your objects behave more like Python built-in collections (like lists or dictionaries) by defining __getitem__ and __setitem__ methods.

class MyClass:
    def __getitem__(self, key):
        return str(key) * 2

    def __setitem__(self, key, value):
        print("You can't set items in this class!")

obj = MyClass()
print(obj[4])  # 44
obj[5] = "Hello"  # You can't set items in this class!

4. __iter__ and __next__ Variables

The __iter__ and __next__ special variables allow your class to be used in for loops, making it behave like an iterator.

class MyClass:
    def __init__(self):
        self.numbers = [1, 2, 3, 4, 5]
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index < len(self.numbers):
            result = self.numbers[self.index]
            self.index += 1
            return result
            raise StopIteration

for num in MyClass():
    print(num)  # Prints numbers 1 through 5

As you can see, Python Special Variable Names can give you incredible control over how your classes and objects behave, enhancing the functionality and expressiveness of your code. Therefore, taking the time to understand these variables certainly has its rewards!

Navigating Your Python Learning Journey

The world of Python is vast and filled with numerous opportunities for exploration. Your journey with Python Special Variable Names is an exciting kickoff point into the depth and breadth of this popular programming language.

Our Python Mini-Degree is an enchanting journey into the world of Python. It is a comprehensive collection of courses that map Python programming in an in-depth, step-by-step manner.

With this Python Mini-Degree, you will dive into the programming basics, explore algorithms, dabble in object-oriented programming, and learn about game and app development. It’s an engaging exploration perfect for beginners, as well as those looking to solidify their pre-existing Python knowledge. By the end of this, you’ll be able to create games, build real-world apps, and have sound knowledge of Python’s various aspects, from simple coding basics to complex algorithms.

Apart from the Python Mini-Degree, our Python course collections at Zenva offer a wide array of individual courses catering to your personal learning journey and preferences.

The courses are flexibly designed, with 24/7 access, supplemented with quizzes and coding challenges to reinforce learning. Our project-based learning approach means that you’ll be picking up skills on the job, adding to your Python portfolio as you learn! Our certified instructors guide you through this journey, providing engaging and comprehensive content without time limits or deadlines, ensuring that you learn Python at your own pace.

Remember, mastery takes dedication, practice, and patience! The world of Python is awaiting your arrival. Happy coding!


The versatility of Python Special Variable Names is one of the many aspects that make Python an engaging and powerful language for developers. By understanding and leveraging these special variables, you can elevate your coding prowess, creating efficient and customizable code that can tackle complex situations with ease.

Remember, the depth of your Python knowledge is endless, and the adventure is ceaseless. It’s never too late or too early to embark on your Python learning journey. Whether you’re a beginner stepping into the programming world or an experienced developer aiming to polish your skills, our Python Mini-Degree is designed to guide you on this thrilling trajectory. Let’s dive into the fascinating world of Python together. Happy coding!

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.