Python classmethods, staticmethods, and instance methods

OOP Method Types in Python: @classmethod vs @staticmethod vs Instance Methods

Dan Bader

Dan Bader 7 Lessons 14m
intermediate python

What’s the difference between @classmethod, @staticmethod, and “plain/regular” instance methods in Python? You’ll know the answer after watching this video course:

  • Regular (instance) methods need a class instance and can access the instance through self. They can read and modify an objects state freely.

  • Class methods, marked with the @classmethod decorator, don’t need a class instance. They can’t access the instance (self) but they have access to the class itself via cls.

  • Static methods, marked with the @staticmethod decorator, don’t have access to cls or self. They work like regular functions but belong to the class’s namespace.

In this course you’ll go over the differences between these three kinds of methods in Python. You’ll also see when to use each with a simple example, so you can improve your object-oriented programming (OOP) skills in Python.

About Dan Bader

Dan Bader

Dan is the Chief Python Nut at Real Python. He helps Python developers take their coding skills to the next level with Python tutorials, books, and online training.

» More about Dan

Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are:

« Browse All Courses