Việc sử dụng __ init __ Trong gói Python là gì?

Như chúng ta đã thảo luận  "self" đại diện cho cùng một đối tượng hoặc thể hiện của lớp. Nếu bạn thấy, bên trong phương thức "get_area", chúng tôi đã sử dụng "self. độ dài" để lấy giá trị của thuộc tính "độ dài". thuộc tính "độ dài" được liên kết với đối tượng [thể hiện của lớp] tại thời điểm tạo đối tượng. "self" đại diện cho đối tượng bên trong lớp. "self" hoạt động giống như "r" trong câu lệnh  "r = Rectangle[160, 120, 2000]". Nếu bạn thấy cấu trúc phương thức "def get_area[self]. "  chúng tôi đã sử dụng "self" làm tham số trong phương thức bởi vì bất cứ khi nào chúng ta gọi phương thức thì đối tượng [thể hiện của lớp] sẽ tự động chuyển thành đối số đầu tiên cùng với các đối số khác của phương thức. Nếu không có đối số nào khác được cung cấp thì chỉ có "self" được truyền cho phương thức. Đó là lý do chúng ta sử dụng "self" để gọi phương thức bên trong lớp["self. get_area[]"]. chúng tôi sử dụng đối tượng [thể hiện của lớp] để gọi phương thức bên ngoài định nghĩa lớp ["r. get_area[]"]. "r" là thể hiện của lớp, khi chúng ta gọi phương thức "r. get_area[]"  ví dụ "r" được chuyển làm đối số đầu tiên ở vị trí của self

Chúng tôi có một đối tượng

    def __init__[self, x, y]:
        self.x = x
        self.y = y
10 tại thời điểm này, nhưng đối tượng
    def __init__[self, x, y]:
        self.x = x
        self.y = y
10 này thực sự không có ý nghĩa gì vì nó không có chức năng [nó không lưu trữ bất kỳ dữ liệu hữu ích nào hoặc có bất kỳ phương thức nào]

Chúng tôi có thể thêm các thuộc tính vào các đối tượng

    def __init__[self, x, y]:
        self.x = x
        self.y = y
10 theo cách thủ công để lưu trữ một số dữ liệu về chúng

Nhưng làm như vậy sẽ là một chút ngớ ngẩn

Sẽ tốt hơn nếu bằng cách nào đó chúng ta có thể gọi lớp này với các đối số để tự động lưu trữ các thuộc tính

Phương thức khởi tạo

Hiện tại, nếu chúng ta cố gắng gọi lớp này bằng các đối số, chúng ta sẽ gặp lỗi

>>> p = Point[1, 2]
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: Point[] takes no arguments
>>>

Để chấp nhận các đối số, chúng ta cần định nghĩa một phương thức

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 trong lớp của chúng ta

    def __init__[self, x, y]:
        self.x = x
        self.y = y

Đối số đầu tiên trong phương thức

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 của chúng ta sẽ luôn là
>>> p = Point[]
>>> p

3 [giống như hầu hết mọi phương thức khác]. Sau đó, chúng ta cần khai báo bất kỳ đối số nào mà chúng ta muốn lớp của mình chấp nhận

Điều chính mà bạn sẽ luôn thấy trong một phương thức

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13, là gán cho các thuộc tính

Đây là lớp

    def __init__[self, x, y]:
        self.x = x
        self.y = y
10 mới của chúng tôi

class Point:
    """2-dimensional point."""
    def __init__[self, x, y]:
        self.x = x
        self.y = y

Nếu chúng ta gọi nó như trước đây mà không có bất kỳ đối số nào, chúng ta sẽ thấy lỗi vì lớp này hiện yêu cầu hai đối số,

>>> p = Point[]
>>> p

6 và
>>> p = Point[]
>>> p

7

>>> p = Point[]
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: __init__[] missing 2 required positional arguments: 'x' and 'y'

Chúng ta cần cung cấp cho lớp

    def __init__[self, x, y]:
        self.x = x
        self.y = y
10 của mình hai đối số để có được một thể hiện mới của lớp này

Đối tượng

    def __init__[self, x, y]:
        self.x = x
        self.y = y
10 này hiện có thuộc tính
>>> p = Point[]
>>> p

6 và thuộc tính
>>> p = Point[]
>>> p

7

Điều đó có nghĩa là phương pháp

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 của chúng tôi được gọi là

Python gọi
    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 bất cứ khi nào một lớp được gọi

Bất cứ khi nào bạn gọi một lớp, Python sẽ xây dựng một thể hiện mới của lớp đó, sau đó gọi phương thức

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 của lớp đó, chuyển thể hiện mới được tạo làm đối số đầu tiên [
>>> p = Point[]
>>> p

3]

Không giống như nhiều ngôn ngữ lập trình,

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 không được gọi là "phương thức xây dựng"

Phương thức

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 của Python được gọi là phương thức khởi tạo. Phương thức khởi tạo khởi tạo thể hiện lớp mới của chúng ta. Vì vậy, tại thời điểm mà phương thức khởi tạo được gọi là thể hiện của lớp đã được xây dựng

Bản tóm tắt

Khi bạn tạo một lớp mới trong Python, phương thức đầu tiên bạn có thể sẽ tạo là phương thức

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13. Phương thức
    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 cho phép bạn chấp nhận các đối số cho lớp của mình

Quan trọng hơn, phương thức

    def __init__[self, x, y]:
        self.x = x
        self.y = y
13 cho phép bạn gán các giá trị ban đầu cho các thuộc tính khác nhau trên các cá thể lớp của bạn

Điều kiện tiên quyết – Lớp Python, Đối tượng, Bản thân Bất cứ khi nào lập trình hướng đối tượng được thực hiện bằng Python, chúng ta hầu như bắt gặp phương thức __init__ trong rất tiếc mà chúng ta thường không hiểu đầy đủ. Bài viết này giải thích khái niệm chính về __init__ nhưng trước khi hiểu về __init__, cần có một số điều kiện tiên quyết

__init__ trong Python là gì?

Trình xây dựng __init__ mặc định trong C++ và Java. Constructor được sử dụng để khởi tạo trạng thái của đối tượng. Nhiệm vụ của constructor là khởi tạo [gán giá trị] cho các thành viên dữ liệu của lớp khi một đối tượng của lớp được tạo. Giống như các phương thức, một hàm tạo cũng chứa một tập hợp các câu lệnh [i. e. hướng dẫn] được thực thi tại thời điểm tạo Đối tượng. Nó được chạy ngay khi một đối tượng của một lớp được khởi tạo. Phương pháp này rất hữu ích để thực hiện bất kỳ khởi tạo nào bạn muốn thực hiện với đối tượng của mình

Thí dụ.  

Python3




    def __init__[self, x, y]:
        self.x = x
        self.y = y
27

    def __init__[self, x, y]:
        self.x = x
        self.y = y
28
    def __init__[self, x, y]:
        self.x = x
        self.y = y
29

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
31

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
00
    def __init__[self, x, y]:
        self.x = x
        self.y = y
01______102
    def __init__[self, x, y]:
        self.x = x
        self.y = y
03

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
02
    def __init__[self, x, y]:
        self.x = x
        self.y = y
06
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
    def __init__[self, x, y]:
        self.x = x
        self.y = y
08

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
90

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
00
    def __init__[self, x, y]:
        self.x = x
        self.y = y
93____102
    def __init__[self, x, y]:
        self.x = x
        self.y = y
95

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
97
    def __init__[self, x, y]:
        self.x = x
        self.y = y
98
    def __init__[self, x, y]:
        self.x = x
        self.y = y
99
>>> p = Point[]
>>> p

80
    def __init__[self, x, y]:
        self.x = x
        self.y = y
02
>>> p = Point[]
>>> p

82

 

 

>>> p = Point[]
>>> p

83
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
>>> p = Point[]
>>> p

85____286
>>> p = Point[]
>>> p

87

>>> p = Point[]
>>> p

88

đầu ra

class Point:
    """2-dimensional point."""
    def __init__[self, x, y]:
        self.x = x
        self.y = y
7

Hiểu mã

Trong ví dụ trên, một người tên Nikhil được tạo. Trong khi tạo một người, “Nikhil” được truyền dưới dạng đối số, đối số này sẽ được truyền cho phương thức __init__ để khởi tạo đối tượng. Từ khóa self đại diện cho thể hiện của một lớp và liên kết các thuộc tính với các đối số đã cho. Tương tự, nhiều đối tượng của lớp Person có thể được tạo bằng cách chuyển các tên khác nhau làm đối số. Dưới đây là ví dụ về init trong python với các tham số

Ví dụ về __init__

Python3




    def __init__[self, x, y]:
        self.x = x
        self.y = y
27

    def __init__[self, x, y]:
        self.x = x
        self.y = y
28
    def __init__[self, x, y]:
        self.x = x
        self.y = y
29

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
31

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
00
    def __init__[self, x, y]:
        self.x = x
        self.y = y
01______102
    def __init__[self, x, y]:
        self.x = x
        self.y = y
03

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
02
    def __init__[self, x, y]:
        self.x = x
        self.y = y
06
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
    def __init__[self, x, y]:
        self.x = x
        self.y = y
08

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
90

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
00
    def __init__[self, x, y]:
        self.x = x
        self.y = y
93____102
    def __init__[self, x, y]:
        self.x = x
        self.y = y
95

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
97
    def __init__[self, x, y]:
        self.x = x
        self.y = y
98
    def __init__[self, x, y]:
        self.x = x
        self.y = y
99
>>> p = Point[]
>>> p

80
    def __init__[self, x, y]:
        self.x = x
        self.y = y
02
>>> p = Point[]
>>> p

82

 

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
298

    def __init__[self, x, y]:
        self.x = x
        self.y = y
299
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
>>> p = Point[]
>>> p

85______286
>>> p = Point[]
>>> p

87

    def __init__[self, x, y]:
        self.x = x
        self.y = y
304
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
>>> p = Point[]
>>> p

85______1307
>>> p = Point[]
>>> p

87

    def __init__[self, x, y]:
        self.x = x
        self.y = y
309
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
>>> p = Point[]
>>> p

85______1312
>>> p = Point[]
>>> p

87

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
314

    def __init__[self, x, y]:
        self.x = x
        self.y = y
315

    def __init__[self, x, y]:
        self.x = x
        self.y = y
316

đầu ra

    def __init__[self, x, y]:
        self.x = x
        self.y = y
0

__init__ với thừa kế

Kế thừa là khả năng của một lớp kế thừa hoặc kế thừa các thuộc tính từ một số lớp khác. Hãy xem xét ví dụ dưới đây để xem cách __init__ hoạt động trong thừa kế.  

Python3




    def __init__[self, x, y]:
        self.x = x
        self.y = y
317

    def __init__[self, x, y]:
        self.x = x
        self.y = y
318

    def __init__[self, x, y]:
        self.x = x
        self.y = y
319

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
28
    def __init__[self, x, y]:
        self.x = x
        self.y = y
301
    def __init__[self, x, y]:
        self.x = x
        self.y = y
302
    def __init__[self, x, y]:
        self.x = x
        self.y = y
95

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
00
    def __init__[self, x, y]:
        self.x = x
        self.y = y
01____102
    def __init__[self, x, y]:
        self.x = x
        self.y = y
308

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
97____198
    def __init__[self, x, y]:
        self.x = x
        self.y = y
002
>>> p = Point[]
>>> p

87

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
02
    def __init__[self, x, y]:
        self.x = x
        self.y = y
006
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
    def __init__[self, x, y]:
        self.x = x
        self.y = y
008

 

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
28
    def __init__[self, x, y]:
        self.x = x
        self.y = y
010

    def __init__[self, x, y]:
        self.x = x
        self.y = y
30
    def __init__[self, x, y]:
        self.x = x
        self.y = y
00
    def __init__[self, x, y]:
        self.x = x
        self.y = y
01____102
    def __init__[self, x, y]:
        self.x = x
        self.y = y
308

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
017

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
019
    def __init__[self, x, y]:
        self.x = x
        self.y = y
02
    def __init__[self, x, y]:
        self.x = x
        self.y = y
021

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
97
    def __init__[self, x, y]:
        self.x = x
        self.y = y
98
    def __init__[self, x, y]:
        self.x = x
        self.y = y
025
>>> p = Point[]
>>> p

87

    def __init__[self, x, y]:
        self.x = x
        self.y = y
04
    def __init__[self, x, y]:
        self.x = x
        self.y = y
02
    def __init__[self, x, y]:
        self.x = x
        self.y = y
006
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
    def __init__[self, x, y]:
        self.x = x
        self.y = y
008

 

 

    def __init__[self, x, y]:
        self.x = x
        self.y = y
032
    def __init__[self, x, y]:
        self.x = x
        self.y = y
07
    def __init__[self, x, y]:
        self.x = x
        self.y = y
034
    def __init__[self, x, y]:
        self.x = x
        self.y = y
035
>>> p = Point[]
>>> p

87

đầu ra

    def __init__[self, x, y]:
        self.x = x
        self.y = y
9

Vì vậy, hàm tạo của lớp cha được gọi trước. Nhưng trong Python, không bắt buộc hàm tạo của lớp cha sẽ luôn được gọi trước. Thứ tự gọi phương thức __init__ cho lớp cha hoặc lớp con có thể được sửa đổi. Điều này có thể được thực hiện đơn giản bằng cách gọi hàm tạo của lớp cha sau phần thân của hàm tạo của lớp con.  

__ init __ dùng để làm gì trong Python?

Phương thức __init__ tương đương với Python của hàm tạo C++ theo cách tiếp cận hướng đối tượng. Hàm __init__ được gọi mỗi khi một đối tượng được tạo từ một lớp. Phương thức __init__ cho phép lớp khởi tạo các thuộc tính của đối tượng và không phục vụ mục đích nào khác . Nó chỉ được sử dụng trong các lớp học.

__ init __ có 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.

__ 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

Việc sử dụng tệp __ init __ py trong một gói ngay cả khi nó trống là gì?

Mục đích duy nhất của __init__. py là để chỉ ra rằng thư mục chứa tệp này là một gói và để coi thư mục này là gói , đó là lý do tại sao nên để trống nó.

Chủ Đề