Lớp Và đối Tượng Trong Python - Openplanning
Có thể bạn quan tâm
- Tất cả tài liệu
- Java
- Java Basic
- Java Collections Framework
- Java IO
- Java New IO
- Java Date Time
- Servlet/JSP
- Eclipse Tech
- SWT
- RCP
- RAP
- Eclipse Plugin Tools
- XML & HTML
- Java Opensource
- Java Application Servers
- Maven
- Gradle
- Servlet/Jsp
- Thymeleaf
- Spring
- Spring Boot
- Spring Cloud
- Struts2
- Hibernate
- Java Web Service
- JavaFX
- SWT
- Oracle ADF
- Android
- iOS
- Python
- Swift
- C#
- C/C++
- Ruby
- Dart
- Batch
- Database
- Oracle
- MySQL
- SQL Server
- PostGres
- Other Database
- Oracle APEX
- Report
- Client
- ECMAScript / Javascript
- TypeScript
- NodeJS
- ReactJS
- Flutter
- AngularJS
- HTML
- CSS
- Bootstrap
- OS
- Ubuntu
- Solaris
- Mac OS
- VPS
- Git
- SAP
- Amazon AWS
- Khác
- Chưa phân loại
- Phần mềm & ứng dụng tiện ích
- VirtualBox
- VmWare
- Hướng đối tượng trong Python
- Tạo class trong Python
- Tham số có mặc định trong Constructor
- So sánh các đối tượng
- Thuộc tính (Attribute)
- Các hàm truy cập vào thuộc tính
- Các thuộc tính có sẵn của class
- Biến của lớp
- Liệt kê danh sách các thành viên của lớp hoặc đối tượng
- Hủy đối tượng
1. Hướng đối tượng trong Python
Python 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 Python
Cú pháp tạo một class:** class syntax **class ClassName: 'Mô tả ngắn về class (Không bắt buộc)' # Code ...- Để định nghĩa một lớp bạn sử dụng từ khóa class, tiếp sau đó là tên của lớp và dấu hai chấm ( : ). Dòng đầu tiên trong thân của lớp là chuỗi (string) mô tả ngắn gọn về lớp này (Không bắt buộc), bạn có thể truy cập vào chuỗi này thông qua ClassName.__doc__ .
- Trong thân của lớp bạn có thể khai báo các thuộc tính, phương thức (method) và các phương thức khởi tạo (Constructor).
- Phương thức của class nó tương tự như một hàm thông thường, nhưng nó là một hàm của class, để sử dụng nó bạn cần phải gọi thông qua đối tượng.
- Tham số đầu tiên của phương thức luôn là self (Một từ khóa ám chỉ chính class đó).
- Phương thức khởi tạo (Constructor) là một phương thức đặc biệt của lớp (class), nó luôn có tên là __init__
- Tham số đầu tiên của constructor luôn là self (Một từ khóa ám chỉ chính class đó).
- Constructor được sử dụng để tạo ra một đối tượng.
- Constructor gán các giá trị từ tham số vào các thuộc tính của đối tượng sẽ được tạo ra.
- Bạn chỉ có thể định nghĩa nhiều nhất một phương thức khởi tạo (constructor) trong class.
- Nếu class không được định nghĩa constructor, Python mặc định coi rằng nó thừa kết từ constructor của lớp cha.
3. Tham số có mặc định trong Constructor
Khá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.Chú ý: Tất cả các tham số bắt buộc (required parameters) phải đặt trước tất cả các tham số có giá trị mặc định.person.pyclass Person : # Tham số age và gender có giá trị mặc định. def __init__ (self, name, age = 1, gender = "Male" ): self.name = name self.age = age self.gender= gender def showInfo(self): print ("Name: ", self.name) print ("Age: ", self.age) print ("Gender: ", self.gender)Ví dụ sử dụng:testPerson.pyfrom person import Person # Tạo một đối tượng Person. aimee = Person("Aimee", 21, "Female") aimee.showInfo() print (" --------------- ") # age, gender mặc định. alice = Person( "Alice" ) alice.showInfo() print (" --------------- ") # gender mặc định. tran = Person("Tran", 37) tran.showInfo()
4. So sánh các đối tượng
Trong 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.pyfrom rectangle import Rectangle r1 = Rectangle(20, 10) r2 = Rectangle(20 , 10) r3 = r1 # So sánh địa chỉ của r1 và r2 test1 = r1 == r2 # --> False # So sánh địa chỉ của r1 và r3 test2 = r1 == r3 # --> True print ("r1 == r2 ? ", test1) print ("r1 == r3 ? ", test2) print (" -------------- ") print ("r1 != r2 ? ", r1 != r2) print ("r1 != r3 ? ", r1 != r3)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ó:- Thuộc tính (Attribute)
- Biến của lớp
6. Các hàm truy cập vào thuộc tính
Thô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).Hàm | Mô tả |
getattr(obj, name[, default]) | Trả về giá trị của thuộc tính, hoặc trả về giá trị mặc định nếu đối tượng không có thuộc tính này. |
hasattr(obj,name) | Kiểm tra xem đối tượng này có thuộc tính cho bởi tham số 'name' hay không. |
setattr(obj,name,value) | Sét giá trị vào thuộc tính. Nếu thuộc tính không tồn tại, thì nó sẽ được tạo ra. |
delattr(obj, name) | Xóa bỏ thuộc tính. |
7. Các thuộc tính có sẵn của class
Cá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:Thuộc tính | Mô tả |
__dict__ | Đưa ra thông tin về lớp này một cách ngắn gọn, dễ hiểu, như một bộ từ điển (Dictionary) |
__doc__ | Trả về chuỗi mô tả về class, hoặc trả về None nếu nó không được định nghĩa |
__class__ | Trả về một đối tượng, chứa thông tin về lớp, đối tượng này có nhiều thuộc tính có ích, trong đó có thuộc tính __name__. |
__module__ | Trả về tên module của lớp, hoặc trả về "__main__" nếu lớp đó được định nghĩa trong module đang được chạy. |
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.Lời khuyên là bạn nên truy cập "biến của lớp" thông qua tên lớp thay vì truy cập thông qua đối tượng. Điều này giúp tránh nhầm lẫn giữa "biến của lớp" và thuộc tính.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.pyfrom player import Player player1 = Player("Tom", 20) player2 = Player("Jerry", 20) # Truy cập thông qua tên lớp. print ("Player.minAge = ", Player.minAge) # Truy cập thông qua đối tượng. print ("player1.minAge = ", player1.minAge) print ("player2.minAge = ", player2.minAge) print (" ------------ ") print ("Assign new value to minAge via class name, and print..") # Gán một giá trị mới cho minAge thông qua tên lớp. Player.minAge = 19 print ("Player.minAge = ", Player.minAge) print ("player1.minAge = ", player1.minAge) print ("player2.minAge = ", player2.minAge)
9. Liệt kê danh sách các thành viên của lớp hoặc đối tượng
Python 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.pyfrom player import Player # In ra danh sách các thuộc tính (attribute), phương thức và biến của lớp Player. print ( dir(Player) ) print ("\n\n") player1 = Player("Tom", 20) player1.address ="USA" # In ra danh sách các thuộc tính, phương thức và biến của đối tượng 'player1'. print ( dir(player1) )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
- TODO
Các hướng dẫn lập trình Python
- Tra cứu tài liệu Python
- Các lệnh rẽ nhánh trong Python
- Hướng dẫn và ví dụ Python Function
- Lớp và đối tượng trong Python
- Thừa kế và đa hình trong Python
- Hướng dẫn và ví dụ Python Dictionary
- Hướng dẫn và ví dụ Python Lists
- Hướng dẫn và ví dụ Python Tuples
- Hướng dẫn sử dụng Date Time trong Python
- Kết nối cơ sở dữ liệu MySQL trong Python sử dụng PyMySQL
- Hướng dẫn xử lý ngoại lệ trong Python
- Hướng dẫn và ví dụ String trong Python
- Giới thiệu về Python
- Cài đặt Python trên Windows
- Cài đặt Python trên Ubuntu
- Cài đặt PyDev cho Eclipse
- Quy ước và các phiên bản ngữ pháp trong Python
- Hướng dẫn lập trình Python cho người mới bắt đầu
- Vòng lặp trong Python
Các hướng dẫn lập trình Python
- Tra cứu tài liệu Python
- Các lệnh rẽ nhánh trong Python
- Hướng dẫn và ví dụ Python Function
- Lớp và đối tượng trong Python
- Thừa kế và đa hình trong Python
- Hướng dẫn và ví dụ Python Dictionary
- Hướng dẫn và ví dụ Python Lists
- Hướng dẫn và ví dụ Python Tuples
- Hướng dẫn sử dụng Date Time trong Python
- Kết nối cơ sở dữ liệu MySQL trong Python sử dụng PyMySQL
- Hướng dẫn xử lý ngoại lệ trong Python
- Hướng dẫn và ví dụ String trong Python
- Giới thiệu về Python
- Cài đặt Python trên Windows
- Cài đặt Python trên Ubuntu
- Cài đặt PyDev cho Eclipse
- Quy ước và các phiên bản ngữ pháp trong Python
- Hướng dẫn lập trình Python cho người mới bắt đầu
- Vòng lặp trong Python
Các bài viết mới nhất
- Xử lý lỗi 404 trong Flutter GetX
- Ví dụ đăng nhập và đăng xuất với Flutter Getx
- Hướng dẫn và ví dụ Flutter NumberTextInputFormatter
- Hướng dẫn và ví dụ Flutter multi_dropdown
- Hướng dẫn và ví dụ Flutter flutter_form_builder
- Hướng dẫn và ví dụ Flutter GetX obs Obx
- Hướng dẫn và ví dụ Flutter GetX GetBuilder
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Flutter InkWell
- Bài thực hành Flutter SharedPreferences
- Hướng dẫn và ví dụ Flutter Radio
- Hướng dẫn và ví dụ Flutter Slider
- Hướng dẫn và ví dụ Flutter SkeletonLoader
- Chỉ định cổng cố định cho Flutter Web trên Android Studio
- Hướng dẫn và ví dụ Flutter SharedPreferences
- Tạo Module trong Flutter
- Flutter upload ảnh sử dụng http và ImagePicker
- Bài thực hành Dart http CRUD
- Hướng dẫn và ví dụ Flutter image_picker
- Flutter GridView với SliverGridDelegate tuỳ biến
- Các hướng dẫn lập trình Python
Từ khóa » Viết Class Trong Python
-
Class Và Cách Khai Báo Class Trong Python
-
Tìm Hiểu Class Và Object Trong Python
-
Class Trong Python - Viblo
-
Class Trong Python (lập Trình Hướng đối Tượng OOP)
-
Giới Thiệu Chung Về Class Trong Python, Constructor | Tự Học ICT
-
Lớp Và đối Tượng Trong Lập Trình Hướng đối Tượng Với Python
-
Class Và Objects Trong Python - 40+ Bài Học Python Miễn Phí
-
Xây Dựng Lớp (class) Và Tạo đối Tượng (object) Trong Python
-
Sử Dụng Class Trong Python | Lê Vũ Nguyên Dạy Học Lập Trình
-
Lớp Và đối Tượng Trong Python - TEK4
-
Giải Mã Lớp Và đối Tượng Trong Python Cho Người Mới Bắt đầu - T3H
-
CLASS VÀ OBJECT TRONG PYTHON - Online Courses - Mifago
-
5.1. Class Và Object — Deep AI KhanhBlog
-
Class Và Object Trong Python | Lập Trình Từ Đầu