class Calc:
# No self or cls: a plain function
@staticmethod
def get_min(*values):
return min(values, default=0)
# Gets the class itself as cls
@classmethod
def class_name(cls):
return cls.__name__
class BigCalc(Calc):
pass
result = Calc.get_min(3, 2, 5, 1, 4)
# result is 1
name1 = Calc.class_name()
# name1 is 'Calc'
# Called on a subclass: cls is the subclass
name2 = BigCalc.class_name()
# name2 is 'BigCalc'
print(f"{result = }")
print(f"{name1 = }")
print(f"{name2 = }")