are special methods in python that start and end with double underscores, like __init__,__str__etc. Automatically get called when you perform certain action on an object.