Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Tìm hiểu về từ khóa self trong các lớp Python
Trong lập trình hướng đối tượng, lớp (class) là một khuôn mẫu (template) chứa các phương thức và biến chung cho tất cả các đối tượng thuộc cùng một kiểu. Trong Python, từ khóa self đại diện cho một thể hiện của lớp (class instance). Tuy nhiên, self không phải là một từ khóa bắt buộc và có thể thay bằng bất kỳ tên nào khác, mặc dù việc này không được khuyến khích.

Các phương thức trong một lớp phải khai báo self làm tham số đầu tiên. Điều này cho phép phương thức truy cập và thay đổi trạng thái của lớp. Vì self liên kết với một thể hiện cụ thể của lớp, các thể hiện khác nhau có thể có các trạng thái (giá trị biến) khác nhau.
Lưu ý: Khi gọi các phương thức của một đối tượng, bạn không sử dụng self trong lời gọi.
Ví dụ cơ bản về self trong Python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def fetch_name(self):
return self.name
def fetch_age(self):
return self.age
def set_age(self, age):
self.age = age
# Tạo đối tượng từ lớp Person
p = Person("Ross", 30)
# Gọi các phương thức
print(p.fetch_name()) # Kết quả: 'Ross'
print(p.fetch_age()) # Kết quả: 30
p.set_age(31) # Thay đổi tuổi thông qua phương thức
print(p.fetch_age()) # Kết quả: 31
Giải thích:
Bài viết này được đăng tại [free tuts .net]
self.namevàself.agelà các biến thể hiện (instance variables) được gắn vào đối tượng khi lớp được khởi tạo.- Khi bạn gọi phương thức
set_age, bạn không cần sử dụngselftrong lời gọi.selfchỉ cần thiết bên trong định nghĩa của phương thức.
Thao tác với biến thể hiện trong Python
Các biến thể hiện thường được khai báo trong phương thức khởi tạo __init__(). Bạn có thể truy cập hoặc thay đổi chúng thông qua đối tượng của lớp.
Ví dụ:
p = Person("Joey", 29)
print(p.name) # Kết quả: 'Joey'
# Thay đổi giá trị biến thể hiện
p.name = "Jim"
print(p.name) # Kết quả: 'Jim'
Thay thế self bằng tên khác trong Python
Về mặt kỹ thuật, bạn có thể thay self bằng bất kỳ tên nào khác trong định nghĩa lớp. Tuy nhiên, theo quy ước, luôn sử dụng self để đảm bảo mã dễ đọc và dễ bảo trì.
Ví dụ:
class Person:
def __init__(first_self, name, age):
first_self.name = name
first_self.age = age
def fetch_name(second_self):
return second_self.name
def fetch_age(third_self):
return third_self.age
p = Person("Ross", 30)
print(p.fetch_name()) # Kết quả: 'Ross'
print(p.fetch_age()) # Kết quả: 30
Mặc dù đoạn mã trên hoạt động bình thường, việc sử dụng các tên như first_self, second_self là không cần thiết và làm cho mã khó đọc hơn.
Kết bài
selfđại diện cho thể hiện của lớp và được sử dụng để truy cập hoặc thay đổi các thuộc tính, phương thức trong lớp.selfphải được khai báo trong các phương thức của lớp, nhưng không cần khi gọi phương thức qua đối tượng.- Luôn dùng
selfđể đảm bảo mã dễ hiểu và tuân thủ quy ước lập trình Python.
Hiểu cách self hoạt động sẽ giúp bạn quản lý trạng thái của đối tượng tốt hơn và phát triển các chương trình hướng đối tượng một cách hiệu quả.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng