How to Add Methods to a Class in Python
A method is a function defined inside a class. In Python, you add methods to describe what an object can do.
On this page, you will learn how to:
- Define a method inside a class
- Call that method on an object
- Pass extra data into a method
- Return a value from a method
- Understand why the first parameter is usually
self
Quick answer
class Dog:
def bark(self):
print("Woof!")
my_dog = Dog()
my_dog.bark()
Output:
Woof!
Define the method inside the class, include self as the first parameter, then call it on an object.
What this page helps you do
By the end, you will be able to:
- Add a method to a class
- Call the method from an object
- Pass data into a method with parameters
- Return a value from a method
If you are new to classes, it may help to read Python classes and objects explained first.
Basic method syntax
A method is a function inside a class.
Here is the basic pattern:
class ClassName:
def method_name(self):
print("Hello")
Important points:
- The method must be indented inside the class
- The first parameter is usually
self selfrefers to the current object- You call the method with dot notation, like
object.method_name()
Simple example: add one method
Let’s create a class with one method and call it.
class Dog:
def bark(self):
print("Woof!")
my_dog = Dog()
my_dog.bark()
Output:
Woof!
What this code does:
class Dog:creates a classdef bark(self):adds a method to that classmy_dog = Dog()creates an objectmy_dog.bark()calls the method on that object
If you need help with object creation, see how to create an object in Python.
How self works
self is how a method refers to the current object.
When you write this:
my_dog.bark()
Python automatically passes my_dog into the method as the first argument.
So this method:
def bark(self):
print("Woof!")
receives the object in self.
Why this matters:
selflets the method read data from the objectselflets the method change data in the object- Without
self, instance data cannot be accessed correctly
You do not normally pass self yourself. Python does that when you call the method on an object.
Add a method that uses instance variables
Methods often work with data stored in the object.
A common way to store that data is with __init__. If that is new to you, see the __init__ method in Python explained.
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def describe(self):
print(f"{self.name} is {self.age} years old.")
my_dog = Dog("Buddy", 3)
my_dog.describe()
Output:
Buddy is 3 years old.
Key lines:
self.name = namestores the name in the objectself.age = agestores the age in the objectself.nameandself.ageare used insidedescribe()
Without self, Python would treat name and age as regular local variables, not object data.
Add a method with extra parameters
A method can take more arguments after self.
Example:
class Person:
def __init__(self, name):
self.name = name
def greet(self, other_name):
print(f"Hello {other_name}, I am {self.name}.")
person1 = Person("Maya")
person1.greet("Leo")
Output:
Hello Leo, I am Maya.
Here:
selfrefers to the current objectother_nameis extra input passed into the method
Use this pattern when the method needs outside data to do its job.
Add a method that returns a value
A method can either print something or return something.
Example that prints
class Calculator:
def double(self, number):
print(number * 2)
calc = Calculator()
calc.double(5)
Output:
10
This shows the result, but you cannot reuse it later.
Example that returns
class Calculator:
def double(self, number):
return number * 2
calc = Calculator()
result = calc.double(5)
print(result)
Output:
10
Use return when you want to save the result, reuse it, or combine it with other code.
If you want more practice with functions first, see how to create a simple function in Python.
Common beginner mistakes
Here are some common problems when adding methods to a class.
Forgetting self
This code is wrong:
class Dog:
def bark():
print("Woof!")
If you call it like this:
my_dog = Dog()
my_dog.bark()
You will get a TypeError because Python passes the object automatically, but the method does not accept it.
Fix it by adding self:
class Dog:
def bark(self):
print("Woof!")
Related help: TypeError: missing required positional argument
Wrong indentation
Methods must be indented inside the class.
Wrong:
class Dog:
def bark(self):
print("Woof!")
Correct:
class Dog:
def bark(self):
print("Woof!")
Related help: IndentationError: expected an indented block
Using instance variables without self
Wrong:
class Dog:
def __init__(self, name):
self.name = name
def speak(self):
print(name)
This fails because name is not defined inside speak().
Correct:
class Dog:
def __init__(self, name):
self.name = name
def speak(self):
print(self.name)
Calling the method incorrectly
Usually, you should call an instance method on an object:
my_dog.bark()
Not on the class itself unless you know exactly what you are doing.
When to add a method
Add a method when an action belongs to the object.
For example, a bank account has data like a balance, and it can do actions like deposit money.
class BankAccount:
def __init__(self, balance):
self.balance = balance
def deposit(self, amount):
self.balance += amount
def show_balance(self):
print(self.balance)
account = BankAccount(100)
account.deposit(50)
account.show_balance()
Output:
150
This is useful because:
- The data and action stay together
- The class is easier to understand
- The object manages its own state
If you have not created a class before, see how to create a class in Python.
Debugging tips
If your method is not working, these checks can help:
print(type(my_object))
print(dir(my_object))
help(MyClass)
print(my_object.__dict__)
What they do:
print(type(my_object))shows the object's typeprint(dir(my_object))shows available attributes and methodshelp(MyClass)shows information about the classprint(my_object.__dict__)shows the object's stored instance variables
These are useful when:
- You are not sure whether the object was created correctly
- You want to check whether the method exists
- You want to inspect stored values like
nameorage
FAQ
Do all class methods need self?
Instance methods do. The self parameter gives access to the current object. Static methods and class methods work differently.
Can I add more than one method to a class?
Yes. A class can have many methods, each handling a different action.
What is the difference between a function and a method?
A method is a function defined inside a class and usually works with objects created from that class.
Can a method return a value?
Yes. Use return when you want the method to give data back.
See also
- Python classes and objects explained
- Basic methods in Python classes explained
- The
__init__method in Python explained - How to create a class in Python
- How to create an object in Python
Once you can add one method, the next step is building a small class with attributes, an __init__ method, and multiple methods that work together.