`self` trong Python là gì?
By ducpm, at: 18:57 Ngày 19 tháng 12 năm 2022
Thời gian đọc ước tính: __READING_TIME__ phút
Trong Python, self là một từ khóa đặc biệt được sử dụng trong định nghĩa lớp để đại diện cho một thể hiện của lớp đó. Nó cho phép truy cập vào các thuộc tính và phương thức của lớp trong lập trình hướng đối tượng.
Một số chúng ta sử dụng điều này mỗi ngày mà không biết một số tính năng cốt lõi
Tại sao sử dụng self?
Tham số self hoạt động như một tham chiếu đến thể hiện hiện tại của lớp. Nó cho phép các phương thức trong lớp truy cập và sửa đổi các thuộc tính của đối tượng và gọi các phương thức khác.
Các đặc điểm chính của self:
-
Tham chiếu đến thể hiện hiện tại của lớp.
-
Phải là tham số đầu tiên của các phương thức thể hiện.
-
Có thể được đặt tên khác, mặc dù
selflà quy ước.
self hoạt động như thế nào
Đây là một ví dụ đơn giản:
class Person:
def __init__(self, name, age):
self.name = name # Gán tên cho thuộc tính thể hiện
self.age = age # Gán tuổi cho thuộc tính thể hiện
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
# Tạo một thể hiện của Person
person = Person("Alice", 30)
person.greet() # Kết quả: Hello, my name is Alice and I am 30 years old.
Giải thích:
-
__init__là một phương thức đặc biệt được gọi là hàm khởi tạo.
-
self.namevàself.agetham chiếu đến các thuộc tính của thể hiện.
-
Phương thức
greet()sử dụngselfđể truy cập và in các thuộc tính này.
Lỗi thường gặp với self
1. Bỏ sót self trong định nghĩa phương thức:
def greet(): # Thiếu self
print("Hello!")
Sửa:
def greet(self):
print("Hello!")
2. Nhầm lẫn self với biến lớp:
class Counter:
count = 0 # Biến lớp
def __init__(self):
self.count += 1 # Sử dụng không chính xác
Sửa: Sử dụng Counter.count để sửa đổi biến lớp.
Các trường hợp sử dụng nâng cao
Truy cập các thuộc tính lớp
class Example:
class_variable = 42
def show_class_variable(self):
print(f"Class variable: {Example.class_variable}")
Kết nối phương thức
class Addition:
def __init__(self):
self.data = []
def add(self, value):
self.data.append(value)
return self # Cho phép kết nối phương thức
def display(self):
print(self.data)
b = Addition()
b.add(1).add(2).add(3).display() # Kết quả: [1, 2, 3]
Kết luận
Từ khóa self là rất cần thiết trong lập trình hướng đối tượng của Python. Nó đại diện cho thể hiện của lớp và cung cấp quyền truy cập vào dữ liệu và phương thức của thể hiện. Bằng cách hiểu cách sử dụng self, bạn có thể tạo ra mã mạnh mẽ và có thể tái sử dụng trong các dự án Python của mình.