Page 72 - Python Simple
P. 72

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



             9.3.2 Đối tượng lớp


             Các đối tượng lớp hỗ trợ hai loại tác vụ: tham chiếu thuộc tính và tạo trường hợp
             (instantiation).

             Tham chiếu thuộc tính dùng cú pháp chuẩn được dùng cho mọi tham chiếu thuộc tính
             trong Python: obj.name. Các tên thuộc tính hợp lệ gồm mọi tên trong vùng tên của
             lớp khi đối tượng lớp được tạo ra. Do đó, nếu định nghĩa lớp có dạng như sau:
                 class MyClass:
                     "A simple example class"
                     i = 12345
                     def f(self):
                         return 'hello world'

             thì MyClass.i và MyClass.f là những tham chiếu thuộc tính hợp lệ, trả về một số
             nguyên và một đối tượng hàm, theo thứ tự đó. Các thuộc tính lớp cũng có thể gán vào,
             cho nên bạn có thể thay đổi giá trị của MyClass.i bằng phép gán. __doc__ cũng là
             một thuộc tính hợp lệ, trả về chuỗi tài liệu của lớp: "A simple example class".

             Class instantiation (tạo trường hợp lớp) dùng cùng cách viết như gọi hàm. Hãy tưởng
             tượng một đối tượng lớp là một hàm không thông số trả về một trường hợp của lớp. Ví
             dụ (với lớp trên):
                 x = MyClass()


             tạo một trường hợp mới của lớp và gán đối tượng này vào biến nội bộ x.

             Tác vụ tạo trường hợp (``gọi'' một đối tượng lớp) tạo một đối tượng rỗng. Nhiều lớp
             thích tạo đối tượng với các trường hợp được khởi tạo ở một trạng thái đầu nào đó. Do
             đó một lớp có thể định nghĩa một phương thức đặc biệt tên __init__(), như sau:

                     def __init__(self):
                         self.data = []


             Khi một lớp định nghĩa một phương thức __init__() , việc tạo trường hợp lớp sẽ tự
             động gọi __init__() ở trường hợp lớp mới vừa được tạo. Trong ví dụ nạy, một trường
             hợp đã khởi tạo mới có thể được tại ra từ:

                 x = MyClass()

             Dĩ nhiên, __init__() (phương thức) có thể nhận thêm thông số. Trong trường hợp đó,
             các thông số đưa vào phép tạo trường hợp lớp sẽ được truyền vào __init__(). Ví dụ,

                 >>> class Complex:
                 ...     def __init__(self, realpart, imagpart):
                 ...         self.r = realpart
                 ...         self.i = imagpart
                 ...
                 >>> x = Complex(3.0, -4.5)
                 >>> x.r, x.i
                 (3.0, -4.5)


             9.3.3 Đối tượng trường hợp




     4 of 13                                                                                  08/31/2011 10:27 AM
   67   68   69   70   71   72   73   74   75   76   77