''' @classmethod @staticmethod classmethod - привязывает функцию к клсассу. Вызывается от класса. staticmethod - Вызывается от класса или экземпляра. ''' class Example1: @classmethod def class_hello(cls): print(f'class_hello {cls}') class Example2: @staticmethod def static_hello(): print('static hello') class Date: def __init__(self, day, month, year): self.day = day self.month = month self.year = year @staticmethod def from_str(data): data = data.split('-') return Date(int(data[0], base=10), int(data[1], base=10), int(data[2], base=10)) def test_1(): day_1 = Date(20, 9, 1997) print(day_1.day) print(day_1.month) print(day_1.year) day_2 = Date(1, 2, 2003) print(day_2.day, day_2.month, day_2.year) def test_2(): day_1 = Date.from_str('12-4-2024') day_2 = Date.from_str('06-09-2022') print(day_1.day, day_1.month, day_1.year) print(day_2.day, day_2.month, day_2.year) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class Pizza: def __init__(self, ingredients=None): if ingredients is None: ingredients = [] self.ingredients = ingredients @staticmethod def margherita(): return Pizza(['mozzarella', 'tomatoes']) @staticmethod def peperoni(): return Pizza(['mozzarella', 'peperoni', 'tomatoes']) @staticmethod def barbecue(): return Pizza(['mozzarella', 'red onion', 'sauce bbq', 'chicken']) def test_3(): bbq = Pizza.barbecue() peperoni = Pizza.peperoni() margherita = Pizza.margherita() print(sorted(bbq.ingredients)) print(sorted(peperoni.ingredients)) print(sorted(margherita.ingredients)) def main(): # test_1() # test_2() test_3() if __name__ == '__main__': main()