Nói rằng tôi có một lớp học với một loạt các phương pháp:Python: Làm điều gì đó cho bất kỳ phương pháp nào của một lớp học?
class Human():
def eat():
print("eating")
def sleep():
print("sleeping")
def throne():
print("on the throne")
Sau đó, tôi chạy tất cả các phương pháp với
John=Human()
John.eat()
John.sleep()
John.throne()
Tôi muốn chạy print("I am")
cho mỗi phương pháp được gọi. Vì vậy, tôi sẽ nhận được một cái gì đó như
I am:
eating
I am:
sleeping
I am:
on the throne
Có cách nào để thực hiện việc này mà không phải định dạng lại từng phương pháp không?
Sử dụng trang trí, áp dụng nó cho tất cả phương pháp: [Đính kèm một trang trí cho tất cả các chức năng trong một lớp] (http://stackoverflow.com/q/3467526) và [Viết một trang trí lớp áp dụng một trang trí cho tất cả các phương pháp] (http://stackoverflow.com/q/6695854) –
Nếu bạn đang cố gắng giảm thiểu số lần chỉnh sửa bạn cần thực hiện, điều đơn giản nhất cần làm là chỉ thay đổi định nghĩa của từng phương pháp. Nếu bạn đang tìm kiếm một cách để cô lập sự thay đổi ở một nơi duy nhất, để áp dụng cho bất kỳ phương pháp hiện tại hoặc tương lai nào, trang trí là cách để đi. – chepner
Tại sao không có chức năng 'def do (self, action)', sau đó 'eat' chỉ trở thành' self.do ("eating") 'và bất kỳ thay đổi nào khác cho đầu ra xảy ra ở một nơi. – jonrsharpe