__ init __() trong Python là gì?

Hàm tạo của một lớp trong Python được định nghĩa bằng phương thức __init__. Python __init__ là một phương thức dành riêng trong Python hoạt động giống như bất kỳ hàm thành viên nào khác của lớp, ngoại trừ các câu lệnh được viết theo định nghĩa của nó được sử dụng để khởi tạo các thành viên dữ liệu của một lớp trong Python, i. e. về cơ bản nó chứa các câu lệnh gán. Phương thức này được gọi tự động tại thời điểm khởi tạo lớp hoặc tạo đối tượng.  

Trong trường hợp kế thừa, lớp con kế thừa phương thức __init__ của lớp cơ sở cùng với các thành viên lớp có thể truy cập khác. Do đó, đối tượng của lớp cơ sở tự động gọi hàm tạo python __init__ của lớp cơ sở tại thời điểm tạo nó vì nó được gọi bởi hàm tạo __init__ của lớp con.  

Phương thức __init__[] hoạt động như thế nào?

Phương thức __init__ của python được khai báo trong một lớp và được sử dụng để khởi tạo các thuộc tính của một đối tượng ngay khi đối tượng được hình thành. Trong khi đưa ra định nghĩa cho phương thức __init__[self], một tham số mặc định, có tên là 'self' luôn được truyền trong đối số của nó. Bản thân này đại diện cho đối tượng của chính lớp đó. Giống như trong bất kỳ phương thức nào khác của một lớp, trong trường hợp __init__, 'self' cũng được sử dụng làm biến đối tượng giả để gán giá trị cho các thành viên dữ liệu của một đối tượng.  

Phương thức __init__ thường được gọi là dấu gạch dưới kép init hoặc dấu gạch dưới init vì nó có hai dấu gạch dưới ở mỗi bên tên của nó. Các dấu gạch dưới kép này ở cả hai bên của init ngụ ý rằng phương thức này được gọi và sử dụng nội bộ trong Python mà không bắt buộc phải được gọi rõ ràng bởi đối tượng.  

Phương thức __init__ của python này có thể có hoặc không nhận đối số để khởi tạo đối tượng. Bạn cũng có thể chuyển các đối số mặc định trong tham số của nó. Tuy nhiên, mặc dù không có khái niệm về Quá tải hàm tạo trong Python, người ta vẫn có thể đạt được tính đa hình trong trường hợp hàm tạo trong Python trên cơ sở đối số của nó

cũng đọc. Đặt trong Python – Cách tạo một bộ trong Python?

Bắt đầu bằng Python. Cú pháp và ví dụ

Chúng ta có thể khai báo một phương thức __init__ bên trong một lớp trong Python bằng cú pháp sau

class class_name[]:
          
          def __init__[self]:
                  # Required initialisation for data members

          # Class methods
                 …
                 …

Hãy lấy một ví dụ về một lớp có tên là Giáo viên trong Python và hiểu rõ hơn về hoạt động của phương thức __init__[] thông qua nó.  

class Teacher:
    # definition for init method or constructor
    def __init__[self, name, subject]:
        self.name = name
        self.subject = subject
     # Random member function
    def show[self]:
        print[self.name, " teaches ", self.subject]
 T = Teacher['Preeti Srivastava', "Computer Science"]   # init is invoked here
T.show[]

Bây giờ, đối với các tình huống mà bạn được yêu cầu đạt được tính đa hình thông qua phương thức __init__[], bạn có thể sử dụng cú pháp sau

class class_name[]:
          
          def __init__[self, *args]:
                   Condition 1 for *args:
                         # Required initialisation for data members
                  Condition 2 for *args:
                        # Required initialisation for data members
                
                    ………
                    ………

          # Class methods
                 …
                 …

Trong trường hợp này, loại đối số được truyền thay cho *args quyết định loại khởi tạo nào phải được tuân theo. Hãy xem ví dụ được đưa ra dưới đây để hiểu rõ hơn về điều này.  

class Teacher:
     def __init__[self, *args]: 

         # Naming the teacher when a single string is passed
         if len[args]==1 & isinstance[args[0], str]:
             self.name = args[0]
         
         # Naming the teacher as well as the subject    
         elif len[args]==2:
             self.name = args[0]
             self.sub = args[1]
          
         # Storing the strength of the class in case of a single int argument
         elif isinstance[args[0], int]:
             self.strength = args[0]
             
t1 = Teacher["Preeti Srivastava"]
print['Name of the teacher is ', t1.name]
 
t2 = Teacher["Preeti Srivastava", "Computer Science"]
print[t2.name, ' teaches ', t2.sub]
 
t3 = Teacher[32]
print["Strength of the class is ", t3.strength]

Các loại Trình tạo __init__

Chủ yếu có ba loại hàm tạo __init__ trong Python

  1. Hàm tạo __init__ mặc định
  2. Trình xây dựng __init__ được tham số hóa
  3. __init__ Với tham số mặc định

1. Trình tạo __init__ mặc định

Hàm tạo __init__ mặc định trong Python là hàm tạo không chấp nhận bất kỳ tham số nào, ngoại trừ tham số ‘self’. 'Bản thân' là một đối tượng tham chiếu cho lớp đó. Cú pháp để xác định hàm tạo __init__ mặc định như sau

class class_name[]:
          
          def __init__[self]:
                  # Constructor statements

          # other class methods
                 …
                 …

Cú pháp tạo một đối tượng cho một lớp với hàm tạo __init__ mặc định như sau

Object_name = class_name[]

Ví dụ

class Default[]:
    
    #defining default constructor
    def __init__[self]:
        self.var1 = 56
        self.var2 = 27
        
    #class function for addition
    def add[self]:
        print["Sum is ", self.var1 + self.var2]

obj = Default[]     # since default constructor doesn’t take any argument
obj.add[]

2. Trình xây dựng __init__ được tham số hóa

Khi chúng ta muốn truyền các đối số trong hàm tạo của một lớp, chúng ta sử dụng phương thức __init__ được tham số hóa. Nó chấp nhận một hoặc nhiều hơn một đối số khác với bản thân. Cú pháp theo sau khi xác định hàm tạo __init__ được tham số hóa đã được đưa ra bên dưới

class class_name[]:
          
          def __init__[self, arg1, arg2, arg3, …]:
                  self.data_member1 = arg1
                  self.data_member2 = arg2
                  self.data_member2 = arg2
                  ……
                  ……

          # other class methods
                 …
                 …

Chúng tôi khai báo một thể hiện cho một lớp với hàm tạo được tham số hóa bằng cú pháp sau

________số 8

Ví dụ

class Default[]:
    
    #defining parameterised constructor
    def __init__[self, n1, n2]:
        self.var1 = n1
        self.var2 = n2
        
    #class function for addition
    def add[self]:
        print["Sum is ", self.var1 + self.var2]

obj = Default[121, 136]              #Creating object for a class with parameterised init
obj.add[]

3. Phương thức __init__ với tham số mặc định

Như bạn có thể đã biết, chúng ta có thể truyền các đối số mặc định cho hàm thành viên hoặc hàm tạo, có thể là bất kỳ ngôn ngữ lập trình phổ biến nào. Theo cách tương tự, Python cũng cho phép chúng ta định nghĩa một phương thức __init__ với các tham số mặc định bên trong một lớp. Chúng tôi sử dụng cú pháp sau để truyền đối số mặc định trong phương thức __init__ trong một lớp

class Teacher:
    # definition for init method or constructor
    def __init__[self, name, subject]:
        self.name = name
        self.subject = subject
     # Random member function
    def show[self]:
        print[self.name, " teaches ", self.subject]
 T = Teacher['Preeti Srivastava', "Computer Science"]   # init is invoked here
T.show[]
0

Bây giờ, hãy xem qua ví dụ sau để hiểu cách thức hoạt động của phương thức __init__ với các tham số mặc định

class Teacher:
    # definition for init method or constructor
    def __init__[self, name, subject]:
        self.name = name
        self.subject = subject
     # Random member function
    def show[self]:
        print[self.name, " teaches ", self.subject]
 T = Teacher['Preeti Srivastava', "Computer Science"]   # init is invoked here
T.show[]
1

Sử dụng Python __init__

Như đã thảo luận trước đó trong blog này và đã thấy từ các ví dụ trước, phương thức __init__ được sử dụng để khởi tạo các thuộc tính của một đối tượng cho một lớp. Chúng tôi cũng đã hiểu làm thế nào có thể đạt được quá tải hàm tạo bằng phương pháp này. Bây giờ, hãy xem phương thức __init__ này hoạt động như thế nào trong trường hợp kế thừa.  

Kế thừa cho phép lớp con kế thừa phương thức __init__[] của lớp cha cùng với các thành viên dữ liệu khác và các hàm thành viên của lớp đó. Phương thức __init__ của lớp cha hoặc lớp cơ sở được gọi bên trong phương thức __init__ của lớp con hoặc lớp con. Trong trường hợp lớp cha yêu cầu một đối số, giá trị tham số phải được truyền trong phương thức __init__ của lớp con cũng như tại thời điểm tạo đối tượng cho lớp con.  

class Teacher:
    # definition for init method or constructor
    def __init__[self, name, subject]:
        self.name = name
        self.subject = subject
     # Random member function
    def show[self]:
        print[self.name, " teaches ", self.subject]
 T = Teacher['Preeti Srivastava', "Computer Science"]   # init is invoked here
T.show[]
2

Từ đầu ra ở trên, chúng ta có thể theo dõi thứ tự mà các hàm tạo __init__ đã được gọi và thực thi. Đối tượng 't' gọi hàm tạo của lớp Giáo viên, hàm này chuyển quyền điều khiển của chương trình cho hàm tạo của lớp Người. Khi __init__ của Person kết thúc quá trình thực thi, điều khiển sẽ quay trở lại phương thức khởi tạo của lớp Teacher và kết thúc quá trình thực thi của nó.  

Phần kết luận

Vì vậy, tóm lại, __init__ là một phương thức dành riêng cho các lớp trong Python về cơ bản hoạt động như các hàm tạo. Nói cách khác, phương thức này trong lớp Python được sử dụng để khởi tạo các thuộc tính của một đối tượng. Nó được gọi tự động tại thời điểm tạo cá thể cho một lớp. Hàm tạo __init__ này được gọi nhiều lần khi các thể hiện được tạo cho một lớp. Chúng ta có thể sử dụng bất kỳ loại nào trong ba loại hàm tạo __init__ – mặc định, được tham số hóa, __init__ với tham số mặc định – tùy theo nhu cầu của mô-đun lập trình của chúng ta. 'Bản thân' là một tham số bắt buộc đối với bất kỳ hàm thành viên nào của một lớp, bao gồm cả phương thức __init__, vì nó là một tham chiếu đến thể hiện của lớp được tạo.  

Mặc dù Python không hỗ trợ nạp chồng hàm tạo, nhưng khái niệm nạp chồng hàm tạo có thể được triển khai bằng cách sử dụng *args được sử dụng để truyền số lượng đối số khác nhau cho các đối tượng khác nhau của một lớp. Hơn nữa, chúng ta có thể sử dụng các câu lệnh if-else để khởi tạo các thuộc tính theo các loại đối số khác nhau trong hàm tạo __init__. Để biết thêm về Lớp và Đối tượng trong Python, bạn có thể xem blog này

Chúng ta cũng đã thấy phương thức __init__ của một lớp hoạt động như thế nào với tính kế thừa. Chúng ta có thể dễ dàng gọi phương thức __init__ của lớp cơ sở bên trong phương thức __init__ của lớp con. Khi một đối tượng cho lớp con được tạo, phương thức __init__ của lớp con được gọi, phương thức này sẽ gọi tiếp phương thức __init__ của lớp cơ sở

__ init __ có cần thiết trong Python không?

__init__ là một trong những phương thức dành riêng trong Python. Trong lập trình hướng đối tượng, nó được gọi là hàm tạo. Phương thức __init__ có thể được gọi khi một đối tượng được tạo từ lớp và cần có quyền truy cập để khởi tạo các thuộc tính của lớp

__ init __ là viết tắt của từ gì?

init là viết tắt của khởi tạo . Nó là một hàm tạo được gọi khi bạn tạo một thể hiện của lớp và không cần thiết. Nhưng thông thường, chúng tôi thường viết phương thức init để đặt trạng thái mặc định của đối tượng.

__ init __ trong câu hỏi phỏng vấn Python là gì?

__init__ là gì? . Tất cả các lớp đều có phương thức __init__ được liên kết với chúng. Nó giúp phân biệt các phương thức và thuộc tính của một lớp với các biến cục bộ. a contructor method in Python and is automatically called to allocate memory when a new object/instance is created. All classes have a __init__ method associated with them. It helps in distinguishing methods and attributes of a class from local variables.

__ init __[ self nghĩa là gì?

"__init__" là một phương thức được đặt lại trong các lớp python. Nó được gọi là một hàm tạo trong thuật ngữ hướng đối tượng. Phương thức này được gọi khi một đối tượng được tạo từ một lớp và nó cho phép lớp khởi tạo các thuộc tính của lớp

Chủ Đề