Cách pythonic và chính xác nhất để làm bí danh thành phần là gì?
Đây là một tình huống giả định:
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 với # 1 các biên tập viên được thử nghiệm của tôi hiểu những điều này cũng tốt như # 2 - hoàn thành tự động, chuỗi doc, v.v.
Có bất kỳ nhược điểm nào đối với cách tiếp cận số 1 không? Cách nào đúng hơn theo quan điểm của python?
Để mở rộng phương pháp số 1 không mong muốn và loại biến thể được gợi ý sẽ miễn nhiễm với tất cả các vấn đề được nêu trong các nhận xét:
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. Nó có được ngôi nhà liên kết với người đó, và dọn dẹp nó. # 1 sẽ dọn dẹp một số ngôi nhà, và tại một số thời điểm (khởi tạo), ngôi nhà đó là chính xác. Nó không đối phó tốt với Người thay đổi nhà cửa, hoặc nếu một Người không có nhà