LỚP TRONG PYTHON
Trong Python, bạn sử dụng các lớp để mô tả các đối tượng. Hãy nghĩ về aclass như một công cụ bạn sử dụng để tạo cấu trúc dữ liệu của riêng mình, chứa thông tin về điều gì đó; sau đó bạn có thể sử dụng các hàm (phương thức) để thực hiện các thao tác trên dữ liệu mà bạn mô tả . Một lớp mô hình hóa cách một thứ nên được định nghĩa và đại diện cho một ý tưởng hoặc một bản thiết kế để tạo ra các đối tượng trong Python.
Tạo một Class
Giả sử bạn muốn tạo một lớp để mô tả một bộ định tuyến, điều đầu tiên bạn phải làm là định nghĩa nó. Trong Python, bạn xác định một lớp bằng cách sử dụng từ khóa lớp, đặt tên cho lớp đó rồi đóng bằng dấu hai chấm. Chúng ta được khuyến nghị viết hoa tên lớp để phân biệt nó với một biến. Đây là ví dụ đơn giản về việc tạo một lớp trong Python:
>>> class Router:
Pass
Để làm cho một lớp hữu ích hơn, bạn có thể thêm một số thuộc tính vào nó. Trong trường hợp của một lớp dùng để mô tả một router, bạn thường có các giá trị mà bạn muốn có khi thực hiện ngay lớp đó. Mỗi bộ định tuyến đều có tên kiểu máy, phiên bản phần mềm và địa chỉ IP để quản lý. Bạn cũng cần phải chuyển một số giá trị để bắt đầu. Giá trị đầu tiên luôn là chính nó. Lý do cho điều này sẽ trở nên hiển nhiên khi bạn khởi tạo lớp: Giá trị tự chuyển theo tên đối tượng mà bạn chọn để khởi tạo lớp. Trong ví dụ sau, đối tượng bạn sẽ tạo là rtr1.
Code:
[COLOR=black][COLOR=#404040]class Router: [/COLOR][/COLOR] [COLOR=black][COLOR=#404040]‘’’Router Class’’’[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]Def __init__(self, model, swversion, ip_add):[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]‘’’initilize value’’’[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]Self.model = model[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]Self.swversion = swversion[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]Self.ip_add = ip_add[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]Rtr1 = Router (‘iosV’, ’15.6.7’, ’10.10.10.1;)[/COLOR][/COLOR]
Để lưu trữ các thuộc tính, bạn ánh xạ tên chính nó và các giá trị chuyển cho nó trở thành các biến bên trong đối tượng, sau đó lưu trữ các giá trị đó dưới dạng thuộc tính. Bit cuối cùng của mã khởi tạo chính đối tượng. Cho đến nay, bạn đã tạo một khuôn mẫu và bằng cách gán dữ liệu cho các biến trong lớp. Bạn có thể truy cập bất kỳ thuộc tính nào được lưu trữ của lớp bằng cách sử dụng dấu chấm.
Code:
[COLOR=black][COLOR=#404040]>>>>rtr1.model[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]‘iosV’[/COLOR][/COLOR]
Code:
[COLOR=black][COLOR=#404040]>>>>rtr1.desc = ‘virtual router’[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]>>>> rtr1.desc[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]‘virtual router’[/COLOR][/COLOR]
Code:
[COLOR=black][COLOR=#404040]>>>> rtr2 = Router (‘isr4221’, ’16.9.5’, ’10.10.10.5’)[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]>>>> rtr2.model[/COLOR][/COLOR] [COLOR=black][COLOR=#404040]‘isr4221’[/COLOR][/COLOR]
Phương thức
Phương thức mô tả một đối tượng và cho phép bạn giao tiếp với một đối tượng. Trong phần trước, bạn tạo ra một đối tượng và áp dụng một số thuộc tính cho nó. Một phương pháp cho phép bạn xem chi tiết bị ẩn đi trong một đối tượng mà không cần gõ một loạt các lệnh và sẽ là một phương pháp hữu ích để thêm một class.
Kế thừa
Kế thừa trong lớp Python cho phép một lớp con lấy thuộc tính và methods của lớp khác.Trong phần trước, Ví dụ 4-1 tạo một lớp cho router, nhưng còn về switch thì sao? Nếu bạn nhìn vào thuật toán, bạn thấy rằng tất cả các thuộc tính cũng áp dụng cho switch, vậy tại sao không sử dụng lại code đã được viết cho một class switch mới? Khi dùng kế thừa, bạn có thể thay thế các methods và thuộc tính khác nhau. Để thừa kế trong một lớp, bạn tạo ra bạn sẽ tạo ra một class như trước, nhưng trước dấu 2 chấm, bạn thêm các dấu 2 chấm gồm cả lớp mà bạn muốn kéo các thuộc tính và methods. Nó là điều quan trọng là lưu ý rằng lớp cha phải đến trước lớp con trong python.
Bạn có thể thêm một biến khác có tên là sw1 và lớp Instantiatethe Switch giống như bạn đã làm với lớp Router, bỏ qua các thuộc tính. Nếu bạn tạo một câu lệnh in khác bằng cách sử dụng đối tượng sw1 mới được tạo, bạn sẽ tìm thấy đầu ra được hiển thị trong ví dụ bên dưới.