Hướng dẫn class number in python
Mở đầu cho series học lập trình Python nâng cao chúng ta sẽ tìm hiểu về thực hành hướng đối tượng trong Python, ở series này mình sẽ không nhắc nhiều về lý thuyết hướng đối tượng nữa mà nếu bạn nào chưa biết thì có thể tham khảo ở đây. Nội dung chính Như các bạn đã được tìm hiểu thì một đối tượng có thể có một hoặc nhiều class và trong mỗi class thì lại chứa một hoặc nhiều các thuộc tính và các phương thức... Để khai báo một class trong Python thì mọi người sử dụng cú pháp sau:
Trong đó, VD: Mình sẽ khai báo class Person.
2, Khai báo thuộc tính trong Class.Như ở trên mình có nói thì một class có thể chứa một hoặc rất nhiều các thuộc tính bên trong. Thuộc tính trong class, cũng tương tự như biến ở trong lập trình hướng thủ tục. Để khai báo một thuộc tính trong class thì mọi người chỉ cần khai báo như khai báo một biến bình thường và lưu ý là nó phải nằm trong phạm vi của class. VD: Mình sẽ khai báo thêm một số thuộc tính cho class
3, Khai báo phương thức trong Class.Phương thức ở trong hướng đối tượng cũng tương tự như hàm ở trong lập trình hướng thủ tục và một class thì có thể không có hoặc có nhiều phương thức. Để khai báo một phương thức trong Python mọi người chỉ cần khai báo như khai báo một hàm bình thường, và lưu ý là phải khai báo trong phạm vi của class. VD: Mình sẽ khai báo thêm một số phương thức cho class
Chú ý:Ở trong ví dụ trên mình có sử dụng từ khóa 4, Khởi tạo class.Sau khi đã khai báo được class trong Python rồi, thì để khởi tạo nó mọi người sử dụng cú pháp sau:
Trong đó:
VD: Mình sẽ khởi tạo class person ở trên.
Sau khi đã khởi tạo được class rồi thì biến được instane lại class đó sẽ có thể truy
cập được các phần tử được cho phép trong class đó. Bằng cách sử dụng dấu
Trong đó:
VD: Mình sẽ truy xuất đến các thuộc tính và phương thức trong class Person.
5, Lời kết.Bài này chúng ta tạm kết thúc ở đây thôi, các bạn nhớ ôn thật kỹ phần này nhé, sau này sẽ dùng nhiều đấy! Đăng ký nhận tin.Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail! Bài Viết Mới Mục lụcNhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất. Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi. 1- Hướng đối tượng trong PythonPython là một ngôn ngữ lập trình hướng thủ tục (Procedural-oriented), đồng thời nó cũng là ngôn ngữ lập trình hướng đối tượng (Object Oriented). Hướng thủ tục (Procedural-oriented) Hướng thủ tục biểu hiện ở việc sử dụng các hàm trong Python. Bạn có thể định nghĩa các hàm, và các hàm này có thể sử dụng tại các module khác trong chương trình Python. Hướng đối tượng (Object Oriented) Hướng đối tượng trong Python biểu hiện ở việc sử dụng lớp (class), bạn có thể định nghĩa một class, class là một nguyên mẫu (prototype) để tạo ra các đối tượng (object/instance). 2- Tạo class trong PythonCú pháp tạo một class: ** class syntax **
Thuộc tính (Attribute): Thuộc tính là một thành viên thành viên của lớp. Chẳng hạn hình chữ nhật có hai thuộc tính width và height (Chiều rộng và chiều cao). Phương thức (Method):
Phương thức khởi tạo (Constructor):
rectangle.py
Tạo đối tượng từ lớp Rectangle: testRectangle.py
Điều gì xẩy ra khi bạn tạo đối tượng từ một class? Khi bạn tạo một đối tượng của lớp Rectangle, phương thức khởi tạo (constructor) của class đó sẽ được gọi để tạo một đối tượng, và các thuộc tính của đối tượng sẽ được gán giá trị từ tham số. Nó giống với hình minh họa dưới đây: 3- Tham số có mặc định trong ConstructorKhác với các ngôn ngữ khác, lớp trong Python chỉ có nhiều nhất một phương thức khởi tạo (Constructor). Tuy nhiên Python cho phép tham số có giá trị mặc định.
person.py
Ví dụ sử dụng: testPerson.py
4- So sánh các đối tượngTrong Python, khi bạn tạo một đối tượng thông qua phương thức khởi tạo (Constructor), sẽ có một thực thể thực sự được tạo ra nằm trên bộ nhớ, nó có một địa chỉ xác định. Một phép toán gán đối tượng AA bởi một đối tượng BB không tạo ra thêm thực thể trên bộ nhớ, nó chỉ là trỏ địa chỉ của AA tới địa chỉ của BB. Toán tử == dùng để so sánh địa chỉ 2 đối tượng trỏ đến, nó trả về True nếu cả 2 đối tượng cùng trỏ tới cùng một địa chỉ trên bộ nhớ. Toán tử != cũng sử dụng để so sánh 2 địa chỉ của 2 đối tượng trỏ đến, nó trả về True nếu 2 đối tượng trỏ tới 2 địa chỉ khác nhau. compareObject.py
5- Thuộc tính (Attribute)Trong Python có 2 khái niệm khá giống nhau, bạn cần phải phân biệt nó:
Để đơn giản, hãy phân tích ví dụ dưới đây: player.py
Thuộc tính (Attribute) Các đối tượng được tạo ra từ một lớp, chúng sẽ nằm tại các địa chỉ khác nhau trên bộ nhớ (memory), và các thuộc tính "cùng tên" của chúng cũng có các địa chỉ khác nhau trên bộ nhớ. Như hình minh họa dưới đây: testAttributePlayer.py
Python cho phép tạo ra một thuộc tính mới cho một đối tượng có trước. Ví dụ đối tượng player1 và thuộc tính mới có tên address. testNewAttributePlayer.py
6- Các hàm truy cập vào thuộc tínhThông thường bạn truy cập vào thuộc tính của một đối tượng thông qua toán tử "dấu chấm" (Ví dụ player1.name). Tuy nhiên Python cho phép bạn truy cập chúng thông qua hàm (function).
testAttFunctions.py
7- Các thuộc tính có sẵn của classCác lớp của Python đều là hậu duệ của lớp object. Và vì vậy nó thừa kế các thuộc tính sau:
testBuildInAttributes.py
8- Biến của lớp Trong Python khái niệm "Biến của lớp (Class's Variable)" tương đương với khái niệm trường tĩnh (Static Field) của các ngôn ngữ khác như Java, CSharp. Biến của lớp có thể được truy cập thông qua tên lớp hoặc
thông qua đối tượng.
Mỗi biến của lớp, có một địa chỉ nằm trên bộ nhớ (memory). Và chia sẻ cho mọi đối tượng của lớp. testVariablePlayer.py
9- Liệt kê danh sách các thành viên của lớp hoặc đối tượngPython cung cấp cho bạn hàm
dir, hàm này liệt kê ra danh sách các phương thức, thuộc tính, biến của lớp hoặc của đối tượng. testDirFunction.py
Chạy ví dụ: ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'maxAge', 'minAge'] ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'address', 'age', 'maxAge', 'minAge', 'name'] 10- Hủy đối tượng
Có thể bạn quan tâm Đây là các khóa học trực tuyến bên ngoài website o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các khóa học miễn phí hoặc giảm giá. |