Metody klasy mogą stanowić też sposób na tworzenie alternatywnych konstruktorów o różnej liczbie argumentów (przeciążanie konstruktora) np. biorąc pod uwagę przykładową klasę Employee, która jako argumenty przyjmuje nazwę pracownika i wartość pensji, możemy utworzyć metodę klasy, która przyjmie 3 argumenty: imię, nazwisko i wartość wynagrodzenia i zwraca egzemplarz klasy Employee.
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
@classmethod
def from_full_name(cls, first, last, salary):
name = '{} {}'.format(first, last)
return cls(name, salary)
john_doe = Employee.from_full_name('John', 'Doe', 8000)
Oprócz metod klasy istnieją też metody statyczne, które są poprzedzone dekoratoraem @staticmethod. Metody statyczne nie przyjmują jako argumentu ani odwołania self do instancji, ani cls do klasy. Mogą przyjmować jawne argumenty, będące parametrami tych funkcji. Funkcje statyczne są powiązane tematycznie z klasą, w której są zawarte, ale nie powinny operować na zmiennych klasy lub instancji.