Python classmethod: использование и преимущества
classmethod в Python - это функция, которая связана с классом, а не с экземпляром класса. Это означает, что вы можете вызывать метод класса без создания экземпляра класса. Это часто используется для создания методов, которые могут использоваться с самим классом.
Для создания метода класса в Python вы должны использовать декоратор @classmethod перед функцией внутри класса. Вот пример простого класса Person с методом firstName.
python
class Person:
def __init__(self, firstName, lastName, age):
self.firstName = firstName
self.lastName = lastName
self.age = age
@classmethod
def from_birth_year(cls, firstName, lastName, birthyear):
age = date.today().year - birthyear
return cls(firstName, lastName, age)
person1 = Person('John', 'Doe', 30)
person2 = Person.from_birth_year('Jane', 'Doe', 1990)
print(person1.firstName, person1.lastName, person1.age)
# Output: John Doe 30
print(person2.firstName, person2.lastName, person2.age)
# Output: Jane Doe 31
В приведенном выше примере мы использовали метод класса from_birth_year, чтобы создать экземпляр Person через год рождения вместо возраста. Это было достигнуто с помощью метода from_birth_year.
Мы также могли вызвать этот метод используя сам класс, а не создавая экземпляр класса
python
person3 = Person.from_birth_year('Bob', 'Smith', 1995)
print(person3.firstName, person3.lastName, person3.age)
# Output: Bob Smith 26
В зависимости от задачи метод класса может быть полезен для создания некоторых стандартных услуг, связанных с классом, например, альтернативных конструкторов, фабричного метода и т.д.