Trong Python, để tạo và khởi tạo một đối tượng của một lớp, bạn cần một phương thức đặc biệt và phương thức [hàm] đặc biệt đó được gọi là constructor. Mỗi lớp có một hàm tạo, nhưng không bắt buộc phải định nghĩa nó một cách rõ ràng. Trong hướng dẫn này, chúng ta sẽ đọc về các hàm tạo Python và cách sử dụng chúng
Mục lục
- Hàm tạo Python - định nghĩa
- Các loại hàm tạo
- Bớt tư tưởng
Constructor trong Python là gì?
Constructor thường được sử dụng để khởi tạo một đối tượng của một lớp. Mục tiêu chính của các hàm tạo là gán các giá trị cho các thành viên dữ liệu của một lớp khi một đối tượng của lớp được tạo.
Constructor luôn được gọi khi một đối tượng được tạo và được mô phỏng bằng phương thức __init__[]. Nó chấp nhận từ khóa self, tham chiếu đến chính nó [đối tượng], làm đối số đầu tiên cho phép truy cập các thuộc tính hoặc phương thức của lớp.
cú pháp
def __init__[self]:
Đầu vào
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
Chúng ta có thể truyền bất kỳ số lượng đối số nào khi tạo đối tượng lớp, dựa trên định nghĩa __init__[]. Hãy nhớ rằng, mọi lớp phải có một hàm tạo, ngay cả khi nó chỉ dựa vào hàm tạo mặc định
đầu ra
Roll No.: 34
Name: Alex
Roll No.: 67
Name: Mark
Trong C++ hoặc Java, hàm tạo có cùng tên với lớp của nó nhưng trong Python thì không giống như vậy
Các loại hàm tạo Python
Có hai loại hàm tạo khác nhau trong Python
Trình xây dựng được tham số hóa
Hàm tạo được tham số hóa có nhiều tham số cùng với bản thân. Nó lấy đối số đầu tiên của nó làm tham chiếu đến cá thể đang được xây dựng được gọi là self và phần còn lại của các đối số được cung cấp bởi lập trình viên
Đầu vào
class Student:
# Parameterized constructor
def __init__[self, name, roll_no]:
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Navya", 34]
stud2 = Student["Mia", 67]
stud1.display[]
stud2.display[]
Trong ví dụ trên, một hàm tạo được tham số hóa được xác định có hai tham số
đầu ra
Roll No.: 34
Name: Navya
Roll No.: 67
Name: Mia
Trình tạo không tham số
Hàm tạo không tham số hóa sử dụng khi chúng ta không muốn thao tác giá trị hoặc hàm tạo chỉ có self làm đối số. Định nghĩa của nó chỉ có một đối số là tham chiếu đến thể hiện đang được xây dựng
Đầu vào
class Student:
# no-argument constructor
def __init__[self]
self.name = "Mark"
self.roll_no = "67"
def display[self]:
print ['Roll No.:', self.roll_no, \n'Name:', self.name]
# Creating object of the class
stud = Student[]
stud.display[]
Như bạn có thể thấy, không có đối số nào được gửi tới hàm tạo trong khi tạo đối tượng
đầu ra
Roll No.: 67
Name: Mark
Bớt tư tưởng
Hãy nhớ rằng, nếu bạn tạo bốn đối tượng, hàm tạo của lớp cũng được gọi bốn lần. Giống như Python có hàm tạo, nó cũng có hàm hủy được sử dụng để hủy đối tượng của một lớp. Mọi người có thể tìm hiểu thêm về các khái niệm Python tại đây
Hàm tạo là phương thức đầu tiên được gọi khi tạo đối tượng [một khái niệm từ Lập trình hướng đối tượng]. Nó luôn là một phần của một lớp [các phương thức đối tượng được định nghĩa trong một lớp]
Hàm tạo luôn được gọi khi tạo một đối tượng mới. Nó có thể được sử dụng để khởi tạo các biến lớp và các thói quen khởi động
khóa học liên quan. Khóa học & bài tập lập trình Python
Giới thiệu
Hàm tạo là một phương thức bên trong lớp, được gọi nếu một đối tượng mới được tạo
Hàm tạo cho phép bạn đặt biến cho đối tượng ngay lập tức
user[1] = User['Alice','Coder','Windows']
user[2] = User['Bea','Marketeer','Mac']
Thay vì phải đặt từng biến theo cách thủ công như
________số 8Mỗi lớp có thể chứa một và chỉ một hàm tạo
Hàm tạo luôn có tên là
user[1].name = 'Alice'9
user[1].job = 'Coder'
user[1]....
# etc
Hình ảnh bên dưới hiển thị hai lớp, mỗi lớp có một hàm tạo [được đánh dấu]
Có một vài quy tắc cho các nhà xây dựng
- Một hàm tạo phải được xác định với tên
00class Student: def __init__[self, name, roll_no] self.name = name self.roll_no = roll_no def display[self]: print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]] # Creating object of the class stud1 = Student["Alex", 34] stud2 = Student["Mark", 67] stud1.display[] stud2.display[]
- Một hàm tạo phải được xác định bằng từ khóa self trong các tham số của nó
- Hàm tạo không thể trả về bất kỳ giá trị nào, ngoại trừ Không có
- Chỉ có một hàm tạo được phép cho một lớp
- Chỉ dành cho khởi tạo đối tượng
Thí dụ
Cú pháp của hàm tạo là
user[1].name = 'Alice'9. Bên trong một lớp nó trông như thế này
user[1].job = 'Coder'
user[1]....
# etc
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
0Sau đó, nếu bạn tạo một ví dụ, hàm tạo sẽ được gọi. Nếu bạn tạo hai đối tượng, hàm tạo sẽ được gọi hai lần
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
3Ý tưởng của hàm tạo là đặt các biến đối tượng
Bạn có thể có một lớp học như thế này
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
4Sau đó tạo một vài đối tượng
Mỗi đối tượng có các giá trị duy nhất, giống như thế giới thực
Các giá trị đó được đặt khi tạo đối tượng, đây là nơi hàm tạo được gọi trong nền
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
5Nếu bạn là người mới bắt đầu học Python, thì tôi thực sự khuyên bạn nên đọc cuốn sách này
ví dụ trực quan
Trong ví dụ bên dưới, chúng ta tạo một lớp C với hàm tạo và phương thức xem. Trong Python, hàm tạo được đặt tên là init
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
6Hàm tạo [init] chỉ là một phương thức khác. Điều đặc biệt về nó là nó được gọi mỗi khi một đối tượng mới được tạo
Chúng tôi tạo một đối tượng C với dòng
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
7Khi thực hiện, nó sẽ xuất cả hai dòng văn bản. Tại sao?
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
8Điều này sẽ xuất ra
class Student:
def __init__[self, name, roll_no]
self.name = name
self.roll_no = roll_no
def display[self]:
print ["Roll No.: %d \nName: %s" % [self.roll_no, self.name]]
# Creating object of the class
stud1 = Student["Alex", 34]
stud2 = Student["Mark", 67]
stud1.display[]
stud2.display[]
9Xem cách đầu ra của hàm tạo được hiển thị trước
Hàm tạo được gọi ngay lập tức khi tạo đối tượng, điều này đặc biệt rõ ràng trong trình bao Python
Nếu đây là lớp học của bạn
user[1].name = 'Alice'0
user[1].job = 'Coder'
user[1]....
# etc
Sau đó, nó gọi hàm tạo cho từng đối tượng được tạo
user[1].name = 'Alice'1
user[1].job = 'Coder'
user[1]....
# etc
Ví dụ thế giới thực
Trong một kịch bản trong thế giới thực, hàm tạo thực hiện những điều hữu ích cho đối tượng mới được tạo. Ví dụ, một constructor cho Car. Nó đặt giá trị mặc định của các biến như số bánh xe, số cửa
Nếu bạn định nghĩa một lớp Car, lớp này đặt một số biến đối tượng [lưu ý self được sử dụng để chỉ các giá trị của đối tượng], nó sẽ được đặt khi tạo
user[1].name = 'Alice'2
user[1].job = 'Coder'
user[1]....
# etc
Sau đó, nếu bạn tạo một số đối tượng và yêu cầu các biến đối tượng được hiển thị, chúng đã được đặt sẵn [vì chúng tôi đặt chúng trong hàm tạo