Bu çok iyi bir soru ama soru kadar istemiyor. Analog olarak aynı yerde olmalarına rağmen 'self' ve 'cls' kullanılan yöntem arasında fark vardır.
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
Artık her ikisinin de ay işlevi olduğunu görebilirsiniz ancak biri sınıf içinde kullanılabilirken diğer işlev adı moon herhangi bir sınıf için kullanılabilir.
Pratik programlama yaklaşımı için:
Circle sınıfı tasarlarken, alan yöntemini kendi yerine cls olarak kullanırız çünkü alanın sadece belirli sınıf sınıfı ile sınırlı olmasını istemiyoruz.