Hãy bắt đầu bài viết Trình xây dựng Python của TechVidvan bằng cách tìm hiểu về Lớp trong Python và Đối tượng trong Python
Các hàm tạo của Python cung cấp cho bạn một cách để khởi tạo các thuộc tính dữ liệu trong một lớp
Tại sao nên sử dụng Python Constructor?
Trước khi đi sâu vào các hàm tạo trong python, trước tiên chúng ta cần nắm rõ một khái niệm quan trọng. Tức là trong Python, bạn không thể sử dụng biến trước khi gán giá trị cho nó, bất kể bạn sử dụng biến ở đâu
Để chứng minh mức độ nghiêm trọng của vấn đề này, hãy xem xét phiên ngắn này tại Python Shell
Câu lệnh đầu tiên không thực thi được khi chúng ta xác định cả hai biến
>>> x += y
đầu ra
TênLỗi. tên 'x' không được xác định
Thông dịch viên phàn nàn rằng 'x' không được xác định
Bây giờ chúng ta hãy xác định 'x' và sau đó xem thông dịch viên nói gì
>>> x = 10 >>> x += y
đầu ra
TênLỗi. tên 'y' không được xác định
Thông dịch viên lại phàn nàn. Lần này nó nói 'y' không được xác định
Không nói thêm thông dịch viên. Chúng tôi cũng sẽ xác định 'y' cho bạn
>>> y = 1 >>> x += y >>> x 11 >>> y 1
thì đấy. Nó hoạt dộng bây giờ
Điểm mấu chốt là, bất kể bạn sử dụng biến ở đâu trong Python, bạn phải khởi tạo chúng với giá trị bắt đầu
Nhưng câu hỏi ở đây là. làm thế nào để chúng ta làm điều này cho một đối tượng mới được tạo từ một lớp?
Trong lập trình hướng đối tượng, các “constructor” sẽ xử lý tình huống này. Trong các ngôn ngữ OOP khác, hàm tạo là một phương thức đặc biệt chịu trách nhiệm cho cả việc khởi tạo đối tượng [i. e. tạo một đối tượng mới] và khởi tạo thuộc tính [i. e. gán giá trị cho các thuộc tính cho đối tượng đó]
Nhưng trong Python, trình thông dịch tự động xử lý phần khởi tạo đối tượng. Vì vậy, tất cả những gì bạn cần một hàm tạo là khởi tạo thuộc tính
Vì vậy, bây giờ chúng ta đã biết “tại sao”, hãy chuyển sang phần “làm thế nào”
Trình xây dựng mã hóa
Chúng ta đã nói ở phần trước rằng một phương thức đặc biệt chịu trách nhiệm gán giá trị cho các thuộc tính của một đối tượng. Phương thức đặc biệt này, hay như chúng ta hay gọi trong Python, “phương thức kỳ diệu” này chính là phương thức __init__
Hãy thêm __init__ vào một lớp Sinh viên có hai thuộc tính, tên và số cuộn
Hiện tại, hãy để trống phương thức __init__ chỉ với một câu lệnh pass bên trong nó [chúng ta sẽ thêm một số hành vi ngay sau đây]
class Student: def __init__[self]: pass def show[self]: print["Name: ", self.name] print["Roll no.: ", self.roll]
Lưu ý rằng giống như mọi phương thức khác được định nghĩa trong một lớp, phương thức __init__ cũng cần có “self” làm tham số đầu tiên của nó
Bây giờ, tất cả những gì chúng ta cần là sử dụng __init__ để khởi tạo các thuộc tính của lớp [tên và cuộn]. Câu hỏi là. chúng ta lấy các giá trị khởi tạo này từ đâu và làm cách nào để các giá trị này được đưa vào __init__?
Truyền đối số cho __init__
Chúng ta có thể chuyển bao nhiêu đối số cho __init__ tùy thích. Tất cả những gì chúng ta phải làm là đặt tên cho các đối số của mình
Vì vậy, hãy thêm các đối số có tên n và r để tự khởi tạo các thuộc tính của chúng ta. tên và bản thân. cuộn tương ứng
class Student: def __init__[self, n, r]: self.name = n self.roll = r def show[self]: print["Name: ", self.name] print["Roll no.: ", self.roll]
Bây giờ chúng ta đã triển khai một hàm tạo python cho lớp Sinh viên của mình, tất cả những gì chúng ta cần làm là truyền các giá trị thực cho các đối số n và r
Chúng tôi làm điều này trong khi khởi tạo đối tượng, tôi. e. , tạo một đối tượng mới cho lớp
Hãy tạo một đối tượng s1 từ lớp Sinh viên
s1 = Student[“Ross”, 10]
Chúng tôi chuyển hai đối số, "Ross" đi vào s1. tên và 10 đi vào s1. cuộn cho đối tượng s1. Bây giờ chúng ta có thể gọi phương thức show[] trên đối tượng s1
>>> s1 = Student[“Ross”, 10] >>> s1.show[] Name: Ross Roll no.: 10 >>> s2 = Student[“Rachel”, 9] >>> s2.show[] Name: Rachel Roll no.: 9 >>>
Chúng ta có thể tạo bao nhiêu đối tượng tùy thích và mỗi đối tượng có thể có các giá trị khác nhau cho các thuộc tính của chúng
Chúng ta cũng có thể truy cập các thuộc tính của các đối tượng bằng cách sử dụng toán tử dấu chấm như s1. tên, trả về giá trị của tên thuộc tính của đối tượng s1
>>> s1.name ‘Ross’ >>> s2.roll 9
Các loại Trình xây dựng Python
Hàm tạo trong Python có thể có hai loại
a. Trình xây dựng được tham số hóa trong Python
Các hàm tạo được tham số hóa là những hàm có tham số [không phải bản thân] được xác định trong danh sách tham số của phương thức __init__. Loại hàm tạo này có thể lấy đối số từ người dùng
Lớp Sinh viên mà chúng ta đã thảo luận ở trên có một hàm tạo được tham số hóa
Hàm tạo của sinh viên nhận hai đối số [không phải bản thân], n và r
b. Trình xây dựng không tham số trong Python
Nó còn được gọi là hàm tạo mặc định
Phương thức __init__ bao gồm một tham số duy nhất self. Không có tham số nào khác trong danh sách tham số __init__
Do đó, hàm tạo này không nhận đối số trong khi tạo một đối tượng mới
Các hàm tạo không tham số gán các giá trị mặc định cho các thuộc tính của lớp
Phương thức __init__ của lớp sinh viên có thể được chuyển đổi thành hàm tạo không tham số như sau
Như bạn đã thấy, phương thức __init__ không có tham số nào ngoài self
Và trình thông dịch python gán các giá trị mặc định là “Monica” và 15 cho thuộc tính self. tên và bản thân. cuộn, tương ứng
Chúng ta có thể tạo một đối tượng s3 như
>>> s3 = Student[] >>> s3.show[]
đầu ra
Tên. Monica
Không lăn. 15
Để tôi chỉ cho bạn một thủ thuật Python
Bạn có thể kết hợp khái niệm hàm tạo mặc định và được tham số hóa trong python. Chúng tôi biết rằng các phương thức là các chức năng được ngụy trang
Giống như các hàm, các phương thức cũng có thể nhận các tham số mặc định
Vì vậy, chúng ta có thể sửa đổi phương thức __init__ của lớp Student để bao gồm các giá trị mặc định cho các tham số n và r của nó
>>> x = 10 >>> x += y0
Bây giờ chúng tôi không chuyển đối số, đặt tên và cuộn nhận các giá trị mặc định lần lượt là “Monica” và 15
Mặt khác, các thuộc tính sẽ nhận các giá trị của các đối số mà chúng ta truyền vào
Hãy tiếp tục và kiểm tra nó trong trình bao Python
>>> x = 10 >>> x += y1
kết thúc
Bài viết về python này đã giới thiệu cho bạn các hàm tạo Python. Bạn cũng đã biết lý do tại sao chương trình của chúng tôi cần các hàm tạo này trong python và cách chúng tôi có thể triển khai chúng
Chúng tôi cũng đã xem qua các loại hàm tạo của python, kết thúc bằng một thủ thuật tinh vi mà bạn có thể sử dụng trong chương trình của mình khi làm việc với các hàm tạo