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.