Class và objects trong python

0
1941
Bài số 19 trong 29 bài của khóa học Python Không Khó

Trong bài viết hôm nay, Lập trình không khó sẽ hướng dẫn các bạn về class và objects trong python. Bài viết này là bước đầu để các bạn làm quen với hướng đối tượng trong python.

Class và objects trong python là gì?

Python là một ngôn ngữ hướng đối tượng và hầu hết mọi thực thể trong Python là một đối tượng(objects), có nghĩa là các lập trình viên sử dụng rộng rãi các lớp và các đối tượng trong khi code bằng Python. Các objects trong Python về cơ bản là sự đóng gói các biến và hàm. Một Class giống như một hàm tạo đối tượng hay một “bản thiết kế” để các lập trình viên tạo các đối tượng.

Cách tạo một class

Cú pháp

  • Để tạo một class, chúng ta sử dụng từ khóa class
  • Tên class được đặt theo quy tắc đặt định danh trong python.
  • Việc khởi tạo class được kết thúc bằng dấu :phía sau tên class.
  • Các phương thức và thuộc tính của class tạo nên phần thân.Phần thân của class được viết lùi vào một khoảng bằng nhau.

VD: tạo một class myClass có thuộc tính là x=5

Tạo một objects trong python

Khi đã có một class, chúng ta có thể sử dụng class đó để tạo một objects trong python.

Hàm __init__()

Ở trên là một ví dụ về một class đơn giản, bạn có thể thấy nó giống như một hàm. Những class như vậy thường không có ích nhiều trong thực tế.

Để hiểu ý nghĩa một lớp, phải hiểu được bản chất của hàm init().

Tất cả các class đều có một hàm được tạo mặc định là hàm init(). Hàm init() được dùng để gán giá trị thuộc tính cho đối tượng hoặc các hoạt động khác khi đối tượng được tạo.

Như một hàm thông thường hàm init cũng được tạo bằng từ khóa def, nếu như trong ngôn ngữ lập trình hướng đối tượng khác thì đây được gọi là hàm tạo. Chúng ta có thể truyền bất kỳ số lượng đối số nào trong khi tạo đối tượng lớp theo định nghĩa của hàm init.

Ví dụ: tạo một class Person với hai thuộc tính là name và age:

Trong ví dụ trên, hàm init hoạt động như một hàm tạo và được gọi tự động ngay khi câu lệnh person = Person(“Hiếu”, 19) được thực thi.

Vì nó là một hàm bên trong một lớp, nên đối số mặc định đầu tiên được truyền vào nó là self. Tham số thứ hai,là name được sử dụng để bắt đối số thứ hai được truyền vào là “Hiếu”. Tham số thứ ba, là age được dùng để bắt đối số thứ ba được truyền vào là 19.

Self là gì?

self giống như this trong các ngôn ngữ hướng đối tượng khác. Đối với các ngôn ngữ khác thì mình không cần phải truyền this hoặc self vào. Nhưng Python yêu cầu phải như thế.

self trong Python không nhất thiết phải là self mà có thể là dat hoặc dnh cũng được. Nhưng hầu hết người ta sử dụng self để thể hiện đây là bản thân object. Trong tiếng Anh self có thể hiểu là bản thân nó. Điều này giúp việc đọc code dễ hơn.

Các phương thức

Đối tượng cũng có thể chứa các phương thức. Các phương thức là các hàm dùng để mô tả các đối tượng.

Ví dụ:

Trong ví dụ trên, thay vì sử dụng hàm print ở ngoài.Chúng ta có thể tạo một hàm display có tác dụng tương tự như hàm in.

Kế thừa trong python

Kế thừa là một tính năng được sử dụng trong lập trình hướng đối tượng; nó đề cập đến việc định nghĩa một lớp mới với ít hoặc không sửa đổi một lớp hiện có. Lớp mới được gọi là lớp dẫn xuất và lớp mà nó kế thừa được gọi là lớp cơ sở . Python hỗ trợ kế thừa; nó cũng hỗ trợ nhiều kế thừa . Một lớp có thể kế thừa các thuộc tính và phương thức hành vi từ một lớp khác.

Trong ví dụ trên, mặc dù color được tạo ở bên trong class Car. Nhưng vẫn có thể truy cập được từ trong class Oto.

Thêm một ví dụ nữa, các hàm cũng có thể truy cập từ lớp con khi được kế thừa từ lớp cơ sở

kết quả:

Các loại kế thừa

  1. Kế thừa đơn: Kiểu thừa kế khi một lớp chỉ kế thừa một lớp cơ sở được gọi là thừa kế đơn, như chúng ta đã thấy trong ví dụ trên.
  2. Đa kế thừa: Khi một lớp kế thừa nhiều lớp cơ sở, nó được gọi là đa kế thừa. Không giống như các ngôn ngữ như Java , Python hoàn toàn hỗ trợ đa kế thừa. Tất cả các lớp cơ sở được đề cập bên trong ngoặc như một danh sách được phân tách bằng dấu phẩy.

Kết quả:

 

  1. Kế thừa đa cấp:
    Khi một lớp kế thừa một lớp cơ sở và sau đó một lớp khác kế thừa lớp dẫn xuất trước          đó, tạo thành cấu trúc lớp ‘cha mẹ, con và cháu’, thì nó được gọi là thừa kế đa cấp.

kết quả:

  1. Kế thừa phân cấp:  Khi một lớp cơ sở được kế thừa bởi nhiều lớp dẫn xuất, nó được gọi là thừa kế phân cấp.
  2. Di truyền lai: Di ​​truyền lai là khi có sự kết hợp của các kiểu thừa kế đã đề cập ở trên, nghĩa là sự pha trộn của nhiều loại thừa kế.

Thuộc tính riêng của một lớp trong Python

Trong khi thực hiện kế thừa, có một số trường hợp nhất định trong đó chúng ta không muốn tất cả các thuộc tính của một lớp được kế thừa bởi lớp dẫn xuất. Trong các trường hợp đó, chúng ta có thể đặt các thuộc tính đó là thành viên riêng của lớp cơ sở. Chúng ta làm điều này bằng cách thêm hai dấu gạch dưới (__) trước tên biến.

Khi chạy chương trình sẽ báo lỗi như sau:

class và objects trong python

Bài viết của mình đến đây là kết thúc, hi vọng sau bài viết các bạn có thể hiểu hơn về class và objects trong python.

Hãy tham gia group lập trình không khó để cùng thảo luận về các vấn đề về lập trình.

Hẹn các bạn vào các bài học sau!!!

Các bài viết trong khóa họcBài trước: Hàm trong pythonBài sau: Module trong python
Subscribe
Notify of
guest
0 Bình luận
Inline Feedbacks
View all comments