Це дуже гарне запитання, але не так хочеться, як питання. Існує різниця між методом "self" і "cls", хоча аналогічно вони знаходяться на одному місці
def moon(self, moon_name):
self.MName = moon_name
#but here cls method its use is different
@classmethod
def moon(cls, moon_name):
instance = cls()
instance.MName = moon_name
Тепер ви можете бачити, що обидві є функцією місяця, але одна може бути використана всередині класу, а інша назва місяця може використовуватися для будь-якого класу.
Для практичного підходу до програмування:
Під час проектування класу кола ми використовуємо метод області як cls замість self, оскільки ми не хочемо, щоб область була обмежена лише певним класом кола.