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
Trong bài viết này, tôi sẽ thảo luận về Constructor trong Python với các ví dụ. Vui lòng đọc bài viết trước của chúng tôi, nơi chúng tôi đã thảo luận về Lớp và Đối tượng trong Python cùng các ví dụ. Là một phần của bài viết này, chúng ta sẽ thảo luận về các con trỏ sau có liên quan đến Trình xây dựng trong Python- Constructor là gì
- Hàm tạo có bắt buộc trong Python không?
- Một hàm tạo có thể được gọi một cách rõ ràng không?
- Hàm tạo có thể có bao nhiêu tham số?
- Trình xây dựng được tham số hóa và không tham số hóa trong Python
- Sự khác biệt giữa một phương thức và hàm tạo trong Python
- Sự khác biệt giữa một phương thức và một chức năng
Trong bất kỳ ngôn ngữ lập trình nào, hàm tạo là một phương thức, theo mặc định, được gọi bất cứ khi nào một thể hiện [đối tượng] cho một lớp được tạo. Không bắt buộc phải gọi hoặc gọi nó một cách rõ ràng
Nói chung, hàm tạo được sử dụng cho các khởi tạo ban đầu được yêu cầu trong quá trình tạo đối tượng. Trong python, hàm tạo là một phương thức có tên ‘__init__’. Tham số đầu tiên của phương thức phải là 'self' [tham chiếu đến đối tượng hiện tại].
cú pháp
Không, lớp không bắt buộc phải có hàm tạo. Nó hoàn toàn dựa trên yêu cầu của chúng ta là có constructor hay không. Tại thời điểm tạo đối tượng nếu có yêu cầu khởi tạo thì chúng ta nên sử dụng hàm tạo, nếu không thì không cần thiết. Cũng không có hàm tạo, chương trình python hợp lệ
Thí dụ. Trình xây dựng [demo3. py]
class Employee: def __init__ [self]: print["constructor is executed automatically at the time of object creation"] emp = Employee[]
đầu ra.
Trong demo3 này. py, chúng ta vừa tạo một đối tượng và chưa gọi bất kỳ phương thức nào. Tuy nhiên, chúng tôi có một cái gì đó được in ra bàn điều khiển, được thực hiện bởi hàm tạo “__init__”. Do đó, chúng ta có thể kết luận rằng nó được gọi tự động tại thời điểm tạo đối tượng,
Một hàm tạo có thể được gọi một cách rõ ràng không?Có, chúng ta có thể gọi hàm tạo một cách rõ ràng bằng tên đối tượng. Nhưng vì hàm tạo được thực thi tự động tại thời điểm tạo đối tượng, nên không nên gọi nó một cách rõ ràng
Thí dụ. Gọi Constructor một cách rõ ràng [demo4. py]
________số 8đầu ra
Ghi chú. Hàm tạo không bắt buộc phải được đưa vào. Trong trường hợp, nếu chúng ta chưa bao gồm một hàm tạo thì bên trong python sẽ bao gồm một hàm tạo trống. Chúng ta có thể kiểm tra điều này bằng cách sử dụng phương thức tích hợp dir[class_name]
Thí dụ. Trình xây dựng rỗng trong Python [demo5. py]
class Sample: def m1[self]: print["m1 is instance method called with object name"] s = Sample[] s.m1[] print[dir[Sample]]
đầu ra
Constructor có thể có bao nhiêu tham số tùy theo yêu cầu. Không có giới hạn cho nó. Tất cả các giá trị mà chúng ta cần hoặc muốn được khởi tạo trong quá trình tạo đối tượng sẽ được chuyển cho hàm tạo. Theo mặc định, một biến nên tham chiếu đến thể hiện hiện tại phải luôn ở đó trong hàm tạo i. bản thân
Thí dụ. Trình xây dựng không được tham số hóa trong Python [demo6. py]
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[]
0đầu ra
trong bản trình diễn. 6. py, hàm tạo không có bất kỳ tham số nào ngoại trừ bản thân. Bản thân chứa địa chỉ đối tượng hiện tại
Thí dụ. Trình xây dựng không được tham số hóa trong Python [demo7. py]
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[]
1đầu ra
trong demo7. py cũng vậy, hàm tạo không có bất kỳ tham số nào ngoại trừ bản thân. Trong hàm tạo, chúng tôi đã khởi tạo một biến 'id' với giá trị 1. Tất cả các đối tượng được tạo cho lớp trên sẽ có cùng giá trị cho id. Nếu chúng ta muốn các giá trị khác nhau cho các trường hợp khác nhau thì chúng ta cần sử dụng một hàm tạo được tham số hóa
Thí dụ. Trình xây dựng được tham số hóa trong Python [demo8. py]
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[]
2đầu ra
trong demo8. py, chúng tôi đã sử dụng hàm tạo được tham số hóa với id làm tham số. Tại thời điểm tạo đối tượng, chúng ta cần truyền một giá trị để nó có thể được lưu trữ trong biến id cho đối tượng. Trong khi đề cập đến id của đối tượng 'e1', bản thân sẽ đề cập đến e1. Do đó, bản thân. id cho 1 làm đầu ra. Trong khi đề cập đến id của đối tượng 'e2', bản thân sẽ đề cập đến e2. Do đó, bản thân. id cho 2 làm đầu ra. Điều này giải thích cho chúng ta chính xác self là gì và nó có thể được sử dụng như thế nào
Thí dụ. Trình xây dựng được tham số hóa trong Python [demo9. py]
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đầu ra
Các chức năng được viết bên trong một lớp chỉ có thể được truy cập với các đối tượng được tạo từ lớp. Chúng được gọi là các phương thức. Chúng ta có thể nói rằng các phương thức không là gì ngoài các hàm có thể được tham chiếu bởi các đối tượng của lớp
Trong bài viết tiếp theo, tôi sẽ thảo luận về Các loại biến trong một lớp trong Python. Ở đây, trong bài viết này, tôi cố gắng giải thích về Constructor trong Python. Tôi hy vọng bạn thích bài viết này. Tôi muốn có phản hồi của bạn. Vui lòng gửi phản hồi, câu hỏi hoặc nhận xét của bạn về bài viết này