Khai báo thuộc tính lớp trong lập trình hướng đối tượng với Python

Lập trình Hướng Đối Tượng với Python

4.8 (10 đánh giá)
Tạo bởi I Hate Python Team Cập nhật lần cuối 5 năm trước 32.467 lượt xem 12 bình luận
Tác giả/Dịch giả: I Hate Python Team
Học nhanh

Danh sách bài học

Khai báo thuộc tính lớp trong lập trình hướng đối tượng với Python

Dẫn nhập 

Trong bài trước, Kteam đã giới thiệu đến bạn LỚP & ĐỐI TƯỢNG TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG PYTHON, cũng như 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 đó.

Ở bài này, chúng ta sẽ tìm hiểu cách sử dụng và hiểu được cách Khai báo thuộc tính (biến) trong class (không thông qua hàm constructor)


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: 

Trong bài nay, Bạn và Kteam sẽ cùng tìm hiểu những nội dụng sau đây:

  • Khai báo và sử dụng
  • Cập nhật giá trị thuộc tính thông qua lớp
  • Cập nhật giá trị thuộc tính thông qua đối tượng
  • Sử dụng thuộc tính trong các phương thức

Khai báo và sử dụng

Ở bài trước, các bạn đã biết cách tạo ra các thuộc tính cho một đối tượng, bản chất các thuộc tính đó cũng chỉ là những biến.

Còn bài này, chúng ta sẽ tạo ra các thuộc tính (các biến) ở ngay trong lớp mà không cần phải thông qua hàm constructor.

Việc khai báo biến trong một lớp nó cũng tương tự như bạn khai báo biến ở trong một hàm hay một block nào đó. Ta sẽ tìm hiểu kĩ qua các ví dụ nhé!

Kết quả:

Được rồi, như bạn đã thấy, ta đã khai báo một thuộc tính suc_manh ở ngay hẳn trong lớp SieuNhan, và dĩ nhiên thuộc tính này không cần phải khai báo gián tiếp qua hàm constructor.

Lớp SieuNhan dĩ nhiên là có thuộc tính suc_manh = 50. Và vì sieu_nhan_A là một đối tượng thuộc lớp SieuNhan, nên những thuộc tính ở lớp SieuNhan mặc định sẽ được tự động gán cho đối tượng này, vì thế đối tượng này cũng có thuộc tính và cũng như là giá trị như ta khai báo trong “khuôn mẫu


Cập nhật giá trị thuộc tính thông qua lớp

Tiếp nè, ta thử thay đổi một vài tí tẹo để xem điều gì đặc biệt

Kết quả:

Như bạn thấy, rõ ràng ta chỉ thay đổi lại giá trị thuộc tính của lớp, tuy nhiên lại làm ảnh hưởng tới giá trị của đối tượng mặc dù đối tượng này được tạo  ra từ lớp SieuNhan khi mà lớp SieuNhan này có giá trị thuộc tính suc_manh50.

Tới đây, bạn có thể đã biết được rằng, khi thay đổi giá trị một thuộc tính được khai báo trong lớp thông qua lớp thì thuộc tính ở toàn bộ đối tượng thuộc lớp đó sẽ được cập nhật lại giá trị mới được thay đổi.

Và hay một cái là, bạn có thể cập nhật giá trị này ngay trong hàm constructor.

Kết quả:

Như bạn thấy, thuộc tính so_thu_tu được thay đổi qua mỗi lần tạo đối tượng mới vì mỗi lần tạo đối tượng mới là ta lại gọi hàm constructor, do đó gián tiếp thay đổi giá trị so_thu_tu của lớp.

Ta gán giá trị này cho một thuộc tính của đối tượng đó ngay trong hàm constructor chứ  không để cho lớp giữ. Vì nếu đễ cho lớp giữ thì như bạn đã biết, nó sẽ thay đổi chứ không hề giữ nguyên sau các lần tạo đối tượng mới.


Cập nhật giá trị thuộc tính thông qua đối tượng

Ta lại thử thay đổi thêm một tí nào

Kết quả:

Đã có sự khác biệt. Khi bạn thay đổi giá trị thuộc tính của một đối tượng, thì chỉ có đối tượng đó bị thay đổi, còn cái “khuôn mẫu” của chúng ta vẫn như vậy. Và dĩ nhiên nếu như có nhiều đối tượng khác nó cũng vẫn sẽ không bị ảnh hưởng chung.


Sử dụng thuộc tính trong các phương thức

Và đương nhiên rồi, như đã nói thì khi bạn khai báo thuộc tính của một đối tượng ở ngay trong “khuôn mẫu” luôn thì nó cũng chỉ vẫn là thuộc tính, vì thế bạn vẫn có thể sử dụng nó ở trong các phương thức một cách bình thường như những thuộc tính được khởi tạo ngay trong hàm constructor

Kết quả:


Kết luận

Bài này đã giúp bạn nắm được cách khai báo thuộc tính ngay trong lớp và một số lưu ý về những thuộc tính này

Ở bài tiếp theo, ta sẽ tìm hiểu sâu về NHỮNG PHƯƠNG THỨC CỦA MỘT ĐỐI TƯỢNG.

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ó


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Khai báo thuộc tính lớp trong lập trình hướng đối tượng với Python dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nế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.

Tác giả/Dịch giả

Chúng tôi là những người có niềm yêu thích Python và muốn Python được nhiều người biết đến hơn ở Việt Nam.

Khóa học

Lập trình Hướng Đối Tượng với Python

Nhắc đến lập trình hướng đối tượng, mọi người nghĩ ngay tới những Java, C++, C#,… Và bên cạnh đó, tuy không nhiều, nhưng vẫn được nhắn đến đó chính là chú trăn thanh lịch Python.

Ở khóa học này, Kteam sẽ giới thiệu với các bạn những kiến thức cơ bản về Lập trình hướng đối tượng trong Python một cách dễ hiểu, từ đó bạn có thể ứng dụng kiến thức hướng đối tượng khi tiếp xúc với các framework, package của Python.

Không những thế, bạn cũng sẽ dễ dàng tiếp cận sâu hơn về lập trình hướng đối tượng khác khi bạn chuyển đổi sang lập trình bằng ngôn ngữ khác, vì như đã nói, hướng đối tượng có ở hầu hết mọi ngôn ngữ hiện nay và được ứng dụng rất rộng rãi

Đánh giá

4.8
10 đánh giá
Đánh giá
5
8
4
2
3
2
1
quydeptrai đã đánh giá 2 năm trước

bạn ko nên phụ thuộc vào giáo án quá

Letrongdat1506 đã đánh giá 3 năm trước

phamdacquanganh đã đánh giá 4 năm trước

rrr

NhatNamOP đã đánh giá 4 năm trước

Nội dung đc. Giảng hay

Đình Duy đã đánh giá 4 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
xuanhoa493 đã bình luận 3 năm trước

Sao chỗ stt của class sai tùm lum vậy, lại còn tạo 1 biến khác nữa. Theo mình set stt của class =0 rồi tăng dần thôi nhỉ

class Sieunhan:
    stt=0
    def __init__(self,name):
        self.name = name
        self.stt = Sieunhan.stt+1
        Sieunhan.stt+=1

 

taii217 đã bình luận 4 năm trước

Cho mình xin tài liệu với ạ!

nguyenviet02 đã bình luận 4 năm trước

Lạm dụng giáo trình quá, đến mấy câu pha trò cx ghi ra r đọc i sì, đọc ko khác 1 tí gì, 1 video ko khác gì sách nói

 

Chimanhvu đã bình luận 5 năm trước

rất hay và bổ ích. Cám ơn Howkteam

Nguyễn Thị Huyền Chi đã bình luận 6 năm trước

Class của mình có 5 argument , trong đó có 1 def chỉ cần 2 argument. Khi truyền argument vào class để gọi phương thức kia thì luôn yêu cầu phải nhập vào đủ 5 argument, có cách nào giải quyết vấn đề này không vậy ? 
Cảm ơn !!

Không có video.