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.name
vàself.age
là 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ụngself
trong lời gọi.self
chỉ 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.self
phả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ả.