Short summary:
- To customize the behavior of the greather than operator
x > y
, override the__gt__()
dunder method in your class definition. - Python internally calls
x.__gt__(y)
to obtain a return value when comparing two objects usingx > y
. - The return value can be any data type because any value can automatically converted to a Boolean by using the
bool()
built-in function. - If the
__gt__()
method is not defined, Python will raise aTypeError
.
Syntax
__gt__(self, other)
To use the greater than operator on custom objects, define the __gt__()
βdunderβ magic method that takes two arguments: self
and other
. You can then use attributes of the custom objects to determine if one is greater than the other.
The method should return a Boolean True
or False
— however, this is not required because every object can be automatically converted to a Boolean value using the built-in bool()
function.
Let’s have a look at an example next.
Example
In the following code, you compare two persons with each other by using the age
attribute as a decision criterion:
class Person: def __init__(self, age): self.age = age def __gt__(self, other): return self.age > other.age alice = Person(18) bob = Person(17) carl = Person(18) print(alice > bob) # True print(alice > carl) # False print(bob > alice) # False
For example, because Alice’s age is 18 years and Bob’s 17 years, the expression alice > bob
evaluates to True
.
Background Video
Default Implementation of __gt__
The __gt__()
dunder method doesn’t have a default implementation. If you try to compare objects using the greater than operator >
, Python will simply raise a TypeError
.
class Person: def __init__(self, age): self.age = age alice = Person(18) bob = Person(17) carl = Person(18) print(alice > bob)
Traceback (most recent call last): File "C:\Users\...\code.py", line 10, in <module> print(alice > bob) TypeError: '>' not supported between instances of 'Person' and 'Person'
TypeError: ‘>’ not supported between instances of ‘…’ and ‘…’
If you get the TypeError: '>' not supported between instances of '...' and '...'
, you try to compare two objects using the greater than operator x > y
for which the __gt__()
magic method is not defined.
class Finxter: pass x = Finxter() y = Finxter() x > y # Python will raise an error!
Output:
Traceback (most recent call last): File "C:\...\code.py", line 8, in <module> x > y # Python will raise an error! TypeError: '>' not supported between instances of 'Finxter' and 'Finxter'
To fix the error, simply define the __gt__(self, other)
method in your class definition and return any object that will then be converted to a Boolean True
or False
.
class Finxter: def __gt__(self, other): return 42 x = Finxter() y = Finxter() x > y # Now it works! # 42
Commutativity of Greater Than >
The output of x > y
and y > x
may be different because the former calls x.__gt__(y)
and the latter calls y.__gt__(x)
. If x
and y
have different definitions of the dunder method __gt__()
, the operation becomes non-commutative.
You can see this in the following example:
class Person: def __gt__(self, other): return False class Human: def __gt__(self, other): return True alice = Person() bob = Human() print(alice > bob) # False print(bob > alice) # True
Programming Humor
π‘ Programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science.
~~~
- Question: Why do Java programmers wear glasses?
- Answer: Because they cannot C# …!
Feel free to check out our blog article with more coding jokes. π

While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com that has taught exponential skills to millions of coders worldwide. He’s the author of the best-selling programming books Python One-Liners (NoStarch 2020), The Art of Clean Code (NoStarch 2022), and The Book of Dash (NoStarch 2022). Chris also coauthored the Coffee Break Python series of self-published books. He’s a computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.