what is classmethod in python code example

Example 1: class methods in python

from datetime import date

# random Person
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    def fromBirthYear(cls, name, birthYear):
        return cls(name, date.today().year - birthYear)

    def display(self):
        print(self.name + "'s age is: " + str(self.age))

person = Person('Adam', 19)
person.display()

person1 = Person.fromBirthYear('John',  1985)
person1.display()

Example 2: python: @classmethod

class Float:
    def __init__(self, amount):
        self.amount = amount

    def __repr__(self):
        return f'<Float {self.amount:.3f}>'

    @classmethod
    def from_sum(cls, value_1, value_2):
        return cls(value_1 + value_2)


class Dollar(Float):
    def __init__(self, amount):
        super().__init__(amount)
        self.symbol = '€'

    def __repr__(self):
        return f'<Euro {self.symbol}{self.amount:.2f}>'


print(Dollar.from_sum(1.34653, 2.49573))

Example 3: what is a class in python

A class is a block of code that holds various functions. Because they
are located inside a class they are named methods but mean the samne
thing. In addition variables that are stored inside a class are named 
attributes. The point of a class is to call the class later allowing you 
to access as many functions or (methods) as you would like with the same
class name. These methods are grouped together under one class name due
to them working in association with eachother in some way.

Example 4: python classmethod

class point:
	def __init__(self, x, y):
    	self.x = x
        self.y = y
        
    @classmethod
    def zero(cls):
    	return cls(0, 0)
        
    def print(self):
    	print(f"x: {self.x}, y: {self.y}")
        
p1 = point(1, 2)
p2 = point().zero()
print(p1.print())
print(p2.print())

Example 5: python classmethod

# classmethod example
In [20]: class MyClass:
    ...:     @classmethod
    ...:     def set_att(cls, value):
    ...:         cls.att = value
    ...:

In [21]: MyClass.set_att(1)

In [22]: MyClass.att
Out[22]: 1

In [23]: obj = MyClass()

In [24]: obj.att
Out[24]: 1

In [25]: obj.set_att(3)

In [26]: obj.att
Out[26]: 3

In [27]: MyClass.att
Out[27]: 3