Суть метода @classmethod, @staticmethod, @property

Подскажите пожалуйтса, конкретно для каких ситуаций эти методы предназначены?. Потому что код, где они используются, можно же выполнять и без них. Например:

 class Gamers:
        count = 0
        
        @classmethod
        def show_gamers(cls):
            return cls.count

выполнение же не изменится если убрать метод:

class Gamers:
    count = 0
    
    def show_gamers():
        return Gamers.count

Точно так же и с @staticmethod, @property ...


Ответы (1 шт):

Автор решения: CrazyElf

А это потому что вы не используете параметр cls, а вот если бы использовали, то и вопроса бы не было:

 class Gamers:
        count = 0
        
        @classmethod
        def show_gamers(cls):
            return cls.count 
                   ^^^ универсальный указатель на класс

Теперь можно наследоваться от этого класса и спокойно использовать этот метод, не переписывая его, он будет работать с любым классом, а не только с жёстко вами прописанным. Ну, если такова задумка, конечно.

→ Ссылка