Dẫn nhậpỞ bài này, chúng ta sẽ đến với những khái niệm cơ bản của LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG PYTHON chính là Lớp (class) và đối tượng (object). Trong đối tượng, ta sẽ biết cách tạo, sử dụng những thuộc tính (attribute) và những phương thức (method) của đối tượng đó.Lớp (class) và đối tượng (object). Trong đối tượng, ta sẽ biết cách tạo, sử dụng những thuộc tính (attribute) và những phương thức (method) của đối tượng đó. Show Nội dungĐể theo dõi bài này một cách tốt nhất, bạn nên có có những kiến thức cơ bản về Python trong khóa LẬP TRÌNH PYTHON CƠ BẢN Nếu bạn chưa có thời gian để học hết khóa trên thì hãy đảm bảo đã tìm hiểu những kiến thức sau đây
Và đương nhiên để học tiếp bài sau, bạn phải nắm vững kiến thức ở các bài trước Bạn và Kteam sẽ cùng tìm hiểu những nội dụng sau đây
Lớp là gì ?Thuộc tính là gì ?lập trình hướng đối tượng (bất kể ngôn ngữ nào) rằng bạn nghĩ tới từ nào đầu tiên khi nói về OOP có lẽ hầu hết câu trả lời nhận được sẽ là: class (Hay tiếng Việt là lớp). Hàm constructor (initialize method) thuộc tính (attribute) và phương thức (method) nhằm miêu tả để từ đó ta tạo ra được những object (đối tượng)
Nếu hỏi một bạn đã biết về lập trình hướng đối tượng (bất kể ngôn ngữ nào) rằng bạn nghĩ tới từ nào đầu tiên khi nói về OOP có lẽ hầu hết câu trả lời nhận được sẽ là: class (Hay tiếng Việt là lớp).
Cú pháp để tạo một lớp
# code
Giả sử giờ ta tạo một lớp để miêu tả siêu nhân.
Lưu ý: theo chuẩn PEP8 về đặt tên của lớp (class) thì sẽ được viết theo kiểu CapWords. Bạn có thể theo hoặc không theo, vì đây chỉ là một chuẩn format code Python thôi.SieuNhan nghĩa là đây là đối tượng thuộc lớp SieuNhan ở hàm main (có nghĩa là ở file ta đang chạy thực thi) kèm theo cái nơi cư trú của nó – thứ mà ta không cần bận tâm lắm lúc này. Rồi nào, ta đã có một khuôn mẫu của siêu nhân rồi, cái ta cần là một đối tượng thuộc lớp siêu nhân.Kết quả:(SN) của ta chưa có thuộc tính gì, ta cần phải giúp SN có thêm một vài thuộc tính. Khi khai báo thuộc tính cho một đối tượng, bạn phải nghĩa ra những thuộc tính để mà giúp ta có thể phân biệt nó với những đối tượng khác cùng lớp, ví dụ như giữa 2 thằng con trai đừng lấy giới tính ra để phân biệt mà nên dùng hơn là sử dụng tên. __main__.SieuNhan nghĩa là đây là đối tượng thuộc lớp SieuNhan ở hàm main (có nghĩa là ở file ta đang chạy thực thi) kèm theo cái nơi cư trú của nó – thứ mà ta không cần bận tâm lắm lúc này. Thuộc tính là gì?ĐƠN GIẢN và cách lấy thuộc tính
Giả sử giờ ta tạo một lớp để miêu tả siêu nhân.
Giả sử giờ ta tạo một lớp để miêu tả siêu nhân.
Hàm constructor (initialize method)Phương thức là gì ? Nếu hỏi một bạn đã biết về lập trình hướng đối tượng (bất kể ngôn ngữ nào) rằng bạn nghĩ tới từ nào đầu tiên khi nói về OOP có lẽ hầu hết câu trả lời nhận được sẽ là: class (Hay tiếng Việt là lớp).constructor.
Lưu ý: đôi khi object người ta cũng có thể ghi là instance, tuy nó không sát nghĩa cho lắm. Bạn không cần bận tâm lắm đâu vì vào ví dụ ta sẽ hiểu thêm, còn nếu bạn muốn hiểu kĩ thì hãy nghiền ngẫm câu tiếng Anh sau: “Objects are instances of types. 42 is an instance of the type int is equivalent to 42 is an int object”constructor (nó là gì thì bạn từ từ sẽ biết). Trong Python, một số hàm trong lớp sẽ được tự động gọi khi ta khai báo một đối tượng và constructor là một trong số những hàm đó. Cú pháp để tạo một lớpself hay cụ thể ở đây là parameter self là một quy ước (lưu ý là hoàn toàn sẽ không bị bắt lỗi cú pháp nếu dùng từ khóa khác), bạn có thể dùng một từ khóa khác. Tuy nhiên từ trước tới giờ mình chưa thấy ai dùng một tứ khóa khác ngoài self. Nếu bạn không muốn gây hiểu lầm cho người khác thậm chí khiến người khác nghĩ là bạn viết code sai thì bạn nên sử dụng từ khóa self. class : self là gì? Không ngẫu nhiên mà người ta lại lấy từ self. Ý nghĩa của nó là chính đối tượng đó. Hơi khó hiểu nhỉ? Coi ví dụ đã, bạn sẽ dần tự hiểu ra từ khóa này.
# codeself sẽ nhận giá trị chính là đối tượng đã gọi hàm đó. Ủa? Hàm __init__ có đối tượng nào gọi đâu? Đương nhiên là không cần gọi, nó đã được tự động gọi khi bạn khởi tạo đối tượng rồi, có nghĩa là khi bạn dung lớp SieuNhan khởi tạo ra đối tượng sieu_nhan_A mặc định bạn đã kêu đối tượng sieu_nhan_A gọi hàm __init__. Và đương nhiên, self được gán bằng đối tượng sieu_nhan_A, các argument “do”, “Kiem”, “Do” còn lại sẽ được truyền vào theo tứ tự. Bạn hãy thử xem lại cách thủ công khai báo thuộc tính lúc ban đầu bạn sẽ thấy nó tương tự. Bạn nên nhớ rằng mỗi khi có một đối tượng nào đó gọi một hàm thì luôn luôn tối thiểu sẽ có một argument được gửi vào hàm đó chính là chính đối tượng đó, nếu hàm đó không có parameter nhận thì sẽ sinh lỗi, còn nếu dư argument (vì ta không lường trước được có một argument là chính đối tượng được ngầm gửi vào) thì vẫn sẽ có lỗi tràn argument. Còn nếu mà gửi vào vẫn không có lỗi thì…Bug này nặng khó fix đây. Khi ta thử in ra các thuộc tính
Kết quả :
Phương thức là gì?Giờ ta thử giúp SN của chúng ta có một câu giới thiệu. Ta tạo một hàm để làm điều đó.SN của chúng ta có một câu giới thiệu. Ta tạo một hàm để làm điều đó. 1Kết quả: 2Thông thường, khi nói tới hàm của lớp, người ta hay gọi là phương thức (method). Khi nói tới hàm thì nó là một chương trình bé bé chờ bạn thực thi, còn khi gọi nó là phương thức thì nó là hàm nhưng liên quan tới lớp thôi. Người ta thường hay « call function », « invoke method ». Nhớ đừng nhầm lẫn nhé, người ta cười cho đấy.« call function », « invoke method ». Nhớ đừng nhầm lẫn nhé, người ta cười cho đấy. Kết luậnBài này đã giúp bạn nắm được những khái niệm cơ bản của lớp và đối tượng trong Python Ở bài tiếp theo, ta sẽ tìm hiểu về KHAI BÁO THUỘC TÍNH TRONG CLASS. Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”Luyện tập – Thử thách – Không ngại khó” Thảo luậnNếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. |