Was ist die pythonischste und korrekteste Art, Kompositionsaliasnamen zu erstellen?
Hier ist ein hypothetisches Szenario:
class House:
def cleanup(self, arg1, arg2, kwarg1=False):
# do something
class Person:
def __init__(self, house):
self.house = house
# aliases house.cleanup
# 1.
self.cleanup_house = self.house.cleanup
# 2.
def cleanup_house(self, arg1, arg2, kwarg1=False):
return self.house.cleanup(arg1=arg1, arg2=arg2, kwarg1=kwarg1)
AFAIK mit # 1 meine getesteten Editoren verstehen diese genauso gut wie # 2 - automatische Vervollständigung, Dokumentzeichenfolgen usw.
Gibt es irgendwelche Nachteile bei # 1 Ansatz? Welcher Weg ist aus Pythons Sicht korrekter?
Eine Erweiterung der Methode Nr. 1, die nicht einstellbar und vom Typ angedeutet ist, wäre immun gegen alle in den Kommentaren genannten Probleme:
class House:
def cleanup(self, arg1, arg2, kwarg1=False):
"""clean house is nice to live in!"""
pass
class Person:
def __init__(self, house: House):
self._house = house
# aliases
self.cleanup_house = self.house.cleanup
@property
def house(self):
return self._house
Person.cleanup_house. Es bekommt das Haus, das mit dieser Person verbunden ist, und räumt es auf. # 1 wird ein Haus aufräumen, und zu einem bestimmten Zeitpunkt (Initialisierung) war dieses Haus das richtige. Es geht nicht gut mit der Person, die das Haus wechselt, oder wenn eine Person kein Haus hat