Это очень хороший вопрос, но не такой как вопрос. Существует разница между используемым методом «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
Теперь вы можете видеть обе функции луны, но одну можно использовать внутри класса, в то время как другую функцию с именем moon можно использовать для любого класса.
Для практического подхода к программированию:
При разработке класса круга мы используем метод area как cls вместо self, потому что мы не хотим, чтобы область была ограничена только определенным классом круга.