Tham số self
Thuộc phần Lập trình hướng đối tượng trong hành trình Python của Coddy. Bài học 4 trên 64.
Tham số self đề cập đến instance của một lớp bên trong các phương thức. Nó cho phép bạn truy cập và chỉnh sửa thuộc tính của đối tượng hiện tại.
Đây là ví dụ về một lớp có các phương thức sử dụng self:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")Tham số self luôn phải đứng đầu tiên trong định nghĩa phương thức. Tham số này cho phương thức biết đối tượng cụ thể nào đang được sử dụng.
Tạo một đối tượng ô tô và thêm các thuộc tính:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"Bây giờ, hãy gọi các phương thức:
my_car.honk()
my_car.describe()Đầu ra:
Beep beep!
I am a Red SedanLưu ý rằng khi gọi my_car.describe(), bạn không truyền gì cho self. Python tự động truyền my_car làm tham số self.
Đây là những gì diễn ra phía sau:
# Khi bạn viết như sau:
my_car.describe()
# Thực ra Python sẽ thực hiện như sau:
Car.describe(my_car)Tham số self cho phép mỗi đối tượng truy cập dữ liệu của chính nó. Nếu không có self, các phương thức sẽ không biết cần dùng thuộc tính của đối tượng nào.
Điểm chính: Luôn đặt self làm tham số (parameter) đầu tiên khi định nghĩa phương thức (method), nhưng không truyền tham số này khi gọi phương thức. Python tự xử lý việc này.
Thử thách
DễHoàn thiện lớp Car trong car.py bằng cách thêm một phương thức có tên display_info, sử dụng tham số self để in ra năm sản xuất, hãng và mẫu xe theo định dạng:
"This car is a [year] [make] [model]".
car.py: Chứa định nghĩa lớpCar, nơi bạn sẽ thêm phương thứcdisplay_infodriver.py: Tệp thực thi chính, nhập và sử dụng lớpCar
Tệp driver.py sẽ nhập lớp Car của bạn và tạo các đối tượng để kiểm tra phần triển khai. Đảm bảo phương thức hoạt động chính xác khi được gọi từ tệp driver.
Tự làm thử
from car import Car
# Kiểm tra code của bạn
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"
my_car.display_info() # Cần in ra: This car is a 2020 Toyota CorollaBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Nền tảng về lập trình hướng đối tượng
Tệp bên ngoàiGiới thiệu về lập trình hướng đối tượngLớp và đối tượngTham số selfPhương thứcThuộc tínhPhương thức khởi tạo (__init__)Ôn tập: máy tính đơn giản4Kế thừa
Kế thừa cơ bảnHàm super()Ghi đè phương thứcKế thừa đa lớpThứ tự phân giải phương thứcÔn tập: hệ thống phân cấp nhân viên2Decorator
Giới thiệu về decoratorDecorator thuộc tínhDecorator phương thức tĩnhDecorator phương thức lớp5Tính đa hình
Xem lại cách ghi đè phương thứcKiểu gõ vịtLớp và phương thức trừu tượngThiết kế giao diệnÔn tập: máy tính hình học8Các khái niệm OOP nâng cao
Kết hợp và kế thừaMixinPhương thức tĩnh và phương thức lớpDecorator lớpTrình quản lý ngữ cảnhTự luyện tập: Trình biên dịch Python online