2010-09-04 35 views
13

Tôi đã triển khai ví dụ ngắn này để cố gắng minh họa một mẫu ủy quyền đơn giản. Câu hỏi của tôi là. Điều này có vẻ như tôi đã hiểu quyền của phái đoàn không?Các đại biểu trong python

+3

Bạn đang làm gì với lớp 'Handler'? – Santa

+0

Đây là một phần của một ví dụ lớn hơn, và tôi quên để loại bỏ nó khi tôi đăng nó ở đây. – MattyW

+2

Trong đoạn mã trên, lớp Geo, Steve và Andy của bạn có chức năng Xử lý mà bạn gọi là getattr(). Tôi recommand để kiểm tra các chức năng thực sự tồn tại trong các đối tượng đại biểu với hasattr() trước khi gọi getattr. Tôi chỉ muốn chỉ ra điều đó bởi vì nó có thể là một nguồn tai nạn. – Ashbay

Trả lời

4

Đó là khái niệm cơ bản, có - chuyển một số yêu cầu đến một đối tượng khác để xử lý.

11

Một mẹo Python: bạn không cần phải nói:

func = getattr(self.handler, 'Handle') 
func(event) 

chỉ nói:

self.handler.Handle(event) 

Tôi không chắc chắn những gì bạn đang làm với lớp Handler của bạn, nó isn' t được sử dụng trong ví dụ của bạn.

Và trong Python, các phương pháp có tên viết hoa là rất bất thường, thường là kết quả của việc chuyển một số API hiện có với tên như thế.

+1

Cảm ơn Ned, đó là một phần của ví dụ lớn hơn bằng cách sử dụng mô hình Lệnh công văn, đó là lý do tại sao tôi sử dụng getattr, cảm ơn vì đã chú ý đến tên phương thức xấu, tôi sẽ sửa chữa – MattyW