Was ist ein sauberer "pythonischer" Weg, um mehrere Konstruktoren zu implementieren?

Eine "pythonische" Möglichkeit, mehrere Konstruktoren in Python zu implementieren, besteht darin, das @classmethod-Dekorator zu verwenden. Eine Klassenmethode ist eine Methode, die an die Klasse und nicht an die Instanz des Objekts gebunden ist.

Hier ist ein Beispiel:

class MyClass:
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2

    @classmethod
    def from_input_string(cls, input_string: str):
        arg1, arg2 = input_string.split(',')
        return cls(arg1, arg2)

    @classmethod
    def from_config_file(cls, file_path: str):
        with open(file_path) as f:
            config = json.load(f)
        return cls(config['arg1'], config['arg2'])

Sie können die Klassenmethoden dann als alternative Konstruktoren verwenden, indem Sie MyClass.from_input_string("hello,world") oder MyClass.from_config_file("path/to/config.json") aufrufen.