Qual é a maneira mais pitônica e correta de criar aliases de composição?
Aqui está um cenário hipotético:
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 com # 1 meus editores testados entendem isso tão bem quanto # 2 - conclusão automática, sequências de documentos etc.
Existem desvantagens na abordagem nº 1? Qual o caminho mais correto do ponto de vista do python?
Para expandir o método # 1, a variante insinuada e com tipo de sugestão seria imune a todos os problemas apontados nos comentários:
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_housefazer. Ele pega a casa associada a essa pessoa e a limpa. O nº 1 limpará uma casa e, em algum momento (inicialização), essa casa será a correta. Não lida bem com a pessoa que muda de casa, ou se uma pessoa não tem casa