Page 69 - Python Simple
P. 69

9. Lớp                                                          http://www.vithon.org/tutorial/2.5/node11.html




                                                Bài chỉ dẫn Python




             9. Lớp


             Chỉ cần một ít cú pháp và từ khóa mới, Python đã có thể hỗ trợ lớp. Nó là sự trộn lẫn
             giữa C++ và Modula-3. Cũng như mô-đun, các lớp tron Python không đặt rào cản
             tuyệt đối giữa định nghĩa lớp và người sử dụng, mà thay vào đó nó dựa vào sự lịch
             thiệp trong cách dùng mà ``không phá định nghĩa.'' Tuy nhiên, các tính năng quan
             trọng nhất của lớp vẫn được giữ lại trọn vẹn: cách kế thừa lớp hỗ trợ nhiều lớp cơ sở, lớp
             con có thể định nghĩa lại bất kỳ phương thức nào của các lớp cơ sở của nó, và một
             phương thức có thể gọi một phương thức cùng tên của một lớp cơ sở. Các đối tượng có
             thể chứa một lượng dũ liệu riêng bất kỳ.

             Theo thuật ngữ C++, mọi thành viên lớp (kể cả thành viên dữ liệu) là public(công
             cộng), và mọi thành viên hàm là virtual(ảo). Không có bộ khởi tạo (constructor) hoặc
             bộ hủy (destructor) đặc biệt. Cũng như Modula-3, không có cách viết tắt nào để tham
             chiếu tới các thành viên của một đối tượng từ các phương thức của nó: hàm phương
             thức được khai báo với thông số thứ nhất thể hiện chính đối tượng đó, và được tự động
             truyền vào qua lệnh gọi. Như trong Smalltalk, các lớp cũng là các đối tượng theo một
             nghĩa rộng: trong Python, mọi kiểu dữ liệu là đều là các đối tượng. Điều này cho phép
             nhập (import) và đổi tên. Không như C++ và Modula-3, các kiểu có sẵn có thể được
             dùng như các lớp cơ sở để mở rộng bởi người dùng. Và như trong C++ nhưng không
             giống Modula-3, đa số các toán tử có sẵn với cú pháp đặc biệt (các toán tử số học, truy
             cập mảng, v.v...) có thể được định nghĩa lại trong các trường hợp cụ thể của lớp.


             9.1 Vài lời về thuật ngữ


             Những từ chuyên ngành dùng ở đây theo từ vựng của Smalltalk và C++.


             Các đối tượng có tính cá thể (individuality), và nhiều tên (trong nhiều phạm vi, scope)
             có thể được gắn vào cùng một đối tượng. Trong các ngôn ngữ khác được gọi là tên
             lóng (alias). Nó thường không được nhận ra khi dùng Python lần đầu, và có thể được
             bỏ qua khi làm việc với các kiểu bất biến cơ bản (số, chuỗi, bộ). Tuy nhiên, tên lóng có
             một ảnh hưởng đối với ý nghĩa của mã Python có sử dụng các đối tượng khả biến như
             danh sách, từ điển, và đa số các kiểu thể hiện các vật ngoài chương trình (tập tin, cửa
             sổ, v.v...). Nó thường được dùng vì tên lóng có tác dụng như là con trỏ theo một vài
             khía cạnh nào đó. Ví dụ, truyền một đối tượng vào một hàm rẻ vì chỉ có con trỏ là
             được truyền, và nếu một hàm thay đổi một đối tượng được truyền vào, thì nơi gọi sẽ
             thấy các thay đổi đó -- thay vì cần hai kiểu truyền thông số như trong Pascal.


             9.2 Phạm vi trong Python và vùng tên


             Trước khi giới thiệu lớp, chúng ta sẽ cần hiểu phạm vi (scope) và vùng tên
             (namespace) hoạt động như thế nào vì các định nghĩa lớp sẽ sử dụng chúng. Kiến thức
             về vấn đề này cũng rất hữu dụng với những nhà lập trình Python chuyên nghiệp.


             Bắt đầu với một vài định nghĩa.





     1 of 13                                                                                  08/31/2011 10:27 AM
   64   65   66   67   68   69   70   71   72   73   74