Чем отличаются `@classmethod` и фабричные функции в их подходе к созданию объектов, особенно в плане доступа к классу и поведения при наследовании? — ДейлиПреп