Tự trị Python

Đ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




Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
00

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
01
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
02

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
04

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
0
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
1
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
3

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
4
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2____06
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
8

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
A init called
B init called
0

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
0
A init called
B init called
3
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2
A init called
B init called
5

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
4
A init called
B init called
7____98
A init called
B init called
9
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
80
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
82

 

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
83
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
85____186
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
87

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
88

đầu ra

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
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




Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
00

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
01
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
02

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
04

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
0
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
1
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
3

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
4
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2____06
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
8

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
A init called
B init called
0

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
0
A init called
B init called
3
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2
A init called
B init called
5

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
4
A init called
B init called
7____98
A init called
B init called
9
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
80
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
82

 

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
028

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
029
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
85____186
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
87

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
034
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
85____1037
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
87

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
039
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
85____1042
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
87

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
044

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
045

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
046

đầu ra

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul

__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




Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
047

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
048

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
049

 

________ 101 ________ 1031 ________ 1032 ________ 95

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
0
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
1
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
038

_______04____97____98

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
02
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
87

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
4
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2____006
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
08

 

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
01
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
10

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
03
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
0
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
1
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
038

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
4
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
17

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
4
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
19____02
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
21

_______04____97____98

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
25
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
87

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
4
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
2____006
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
08

 

 

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
32
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
7
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
34
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
35
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
87

đầu ra

A init called
B init called

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.  

Giá trị bản thân trong Python là gì?

Tham số self là tham chiếu đến phiên bản hiện tại của lớp và được sử dụng để truy cập các biến thuộc về lớp .

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

Từ khóa self in trong Python được sử dụng cho tất cả các phiên bản trong một lớp . Bằng cách sử dụng từ khóa self, người ta có thể dễ dàng truy cập tất cả các thể hiện được định nghĩa trong một lớp, bao gồm các phương thức và thuộc tính của nó. trong đó. __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.

Tôi có thể gán cho self trong Python không?

Tương tự như cách bạn có thể tạo bất kỳ biến nào ở bất kỳ đâu trong Python, bạn có thể gán bất kỳ thuộc tính nào cho một đối tượng thông qua self . Điều này có nghĩa là bạn có thể lưu trữ bất kỳ giá trị nào với bất kỳ tên nào để tự. Chúng thậm chí không cần phải được đưa ra làm đối số trong hàm __init__.

Val nghĩa là gì trong Python?

Điều này hơi giống với việc chỉ sử dụng tên viết hoa trong python để biểu thị một hằng số. Tuy nhiên, 'val' chỉ có nghĩa là 'biến' (hoặc giá trị) sẽ luôn tham chiếu đến cùng một đối tượng chứ không đảm bảo rằng đối tượng đó sẽ không thay đổi.