Tôi có nên kế thừa từ đối tượng Python không?

Một trong những khái niệm cốt lõi trong ngôn ngữ lập trình hướng đối tượng [OOP] là tính kế thừa. Đó là một cơ chế cho phép bạn tạo một hệ thống phân cấp các lớp chia sẻ một tập hợp các thuộc tính và phương thức bằng cách lấy một lớp từ một lớp khác. 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 lớp khác.  

Lợi ích của thừa kế là.  

  • Nó thể hiện tốt các mối quan hệ trong thế giới thực
  • Nó cung cấp khả năng sử dụng lại mã. Chúng ta không phải viết đi viết lại cùng một mã. Ngoài ra, nó cho phép chúng tôi thêm nhiều tính năng hơn vào một lớp mà không cần sửa đổi nó
  • Nó có tính chất bắc cầu, nghĩa là nếu lớp B kế thừa từ lớp A khác, thì tất cả các lớp con của B sẽ tự động kế thừa từ lớp A
  • Kế thừa cung cấp một cấu trúc mô hình đơn giản, dễ hiểu.  
  • Chi phí phát triển và bảo trì ít hơn do thừa kế.  

Cú pháp kế thừa Python

Class BaseClass:
    {Body}
Class DerivedClass[BaseClass]:
    {Body}

Tạo một lớp cha

Tạo một lớp Người với các phương thức Hiển thị

Python3




Satyam 102
92

 

Satyam 102
0
Satyam 102
1
Satyam 102
2____13

Satyam 102
4

Satyam 102
4
Satyam 102
6

Satyam 102
4
Satyam 102
8
Satyam 102
9
Satyam 102
10
Satyam 102
11
Satyam 102
12
Satyam 102
3

Satyam 102
14
Satyam 102
10
Satyam 102
16
Satyam 102
17
Satyam 102
18

Satyam 102
14
Satyam 102
10
Satyam 102
21
Satyam 102
12
Satyam 102
17
Satyam 102
12

 

Satyam 102
4
Satyam 102
26

Satyam 102
4
Satyam 102
8
Satyam 102
29
Satyam 102
10
Satyam 102
3

Satyam 102
14
Satyam 102
43
Satyam 102
44
Satyam 102
10
Satyam 102
46
Satyam 102
10
Satyam 102
21
Satyam 102
12
Satyam 102
10

 

 

Satyam 102
11

Satyam 102
12
Satyam 102
17
Satyam 102
1_______415
Satyam 102
16
Satyam 102
17
Satyam 102
10
Satyam 102
19

Satyam 102
10

đầu ra

Satyam 102

Tạo một lớp con

Ở đây Emp là một lớp khác sẽ kế thừa các thuộc tính của lớp Person [lớp cơ sở]

Python3




Satyam 102
0
Satyam 102
12

Satyam 102
4

Satyam 102
4
Satyam 102
8
Satyam 102
16
Satyam 102
44
Satyam 102
10
Satyam 102
3

Satyam 102
14
Satyam 102
43
Satyam 102
44
Satyam 102
53
Satyam 102
10

Satyam 102
14

Satyam 102
56
Satyam 102
17
Satyam 102
58
Satyam 102
59
Satyam 102
16
Satyam 102
31____410

 

Satyam 102
33

Satyam 102
34

 

Satyam 102
35

Satyam 102
36____516
Satyam 102
38

đầu ra

Satyam 102
1

Ví dụ về tính kế thừa trong Python

Python3




Satyam 102
92

 

Satyam 102
920

Satyam 102
921

Satyam 102
922

Satyam 102
923

 

 

Satyam 102
0
Satyam 102
1
Satyam 102
2____13

 

Satyam 102
14
Satyam 102
6

Satyam 102
14
Satyam 102
8
Satyam 102
9____110
Satyam 102
04

Satyam 102
05
Satyam 102
10____116
Satyam 102
17
Satyam 102
18

 

Satyam 102
14
Satyam 102
11

Satyam 102
14
Satyam 102
8
Satyam 102
14
Satyam 102
10
Satyam 102
3

________ 105 ________ 118 ________ 110 ________ 116

 

Satyam 102
14
Satyam 102
26

Satyam 102
14
Satyam 102
8
Satyam 102
25
Satyam 102
10
Satyam 102
3

________ 105 ________ 118 ________ 130

 

 

Satyam 102
31

Satyam 102
0
Satyam 102
33

 

Satyam 102
14
Satyam 102
35

Satyam 102
14
Satyam 102
8
Satyam 102
25
Satyam 102
10
Satyam 102
3

________ 105 ________ 118 ________ 143

 

 

Satyam 102
11

Satyam 102
12
Satyam 102
17
Satyam 102
1____148
Satyam 102
49
Satyam 102
19

Satyam 102
43
Satyam 102
52

 

Satyam 102
12
Satyam 102
17
Satyam 102
55____156
Satyam 102
49
Satyam 102
58

Satyam 102
43
Satyam 102
52

đầu ra.  

Satyam 102
2

Lớp đối tượng là gì?

Giống như lớp Java Object, trong Python [từ phiên bản 3. x], đối tượng là gốc của tất cả các lớp.  

  • Trong Trăn 3. x, “Kiểm tra lớp [đối tượng]” và “Kiểm tra lớp” giống nhau.  
  • Trong Python 2. x, “class Test[object]” tạo một lớp có đối tượng là cha [được gọi là lớp kiểu mới] và “class Test” tạo một lớp kiểu cũ [không có cha phản đối].  

Phân lớp [Gọi hàm tạo của lớp cha]

Một lớp con cần xác định lớp nào là lớp cha của nó. Điều này có thể được thực hiện bằng cách đề cập đến tên lớp cha trong định nghĩa của lớp con.  

Ví dụ. tên lớp con [tên lớp cha].  

Python3




Satyam 102
61

Satyam 102
62

 

Satyam 102
63

Satyam 102
0
Satyam 102
1
Satyam 102
2____13

 

Satyam 102
14
Satyam 102
69

Satyam 102
14
Satyam 102
8
Satyam 102
9____110
Satyam 102
74

Satyam 102
05
Satyam 102
10____116
Satyam 102
17
Satyam 102
18

Satyam 102
05
Satyam 102
10____182
Satyam 102
17
Satyam 102
84

 

Satyam 102
14
Satyam 102
8
Satyam 102
87
Satyam 102
10
Satyam 102
3

Satyam 102
05
Satyam 102
43____344
Satyam 102
10
Satyam 102
94

Satyam 102
05
Satyam 102
43____344
Satyam 102
10
Satyam 102
99

 

Satyam 102
100

 

 

Satyam 102
0
Satyam 102
33

Satyam 102
14
Satyam 102
8
Satyam 102
9____110
Satyam 102
107

Satyam 102
05
Satyam 102
10
Satyam 102
110
Satyam 102
17
Satyam 102
112

Satyam 102
05
Satyam 102
10____1115
Satyam 102
17
Satyam 102
117

 

Satyam 102
05
Satyam 102
119

Satyam 102
05
Satyam 102
121____110
Satyam 102
123

 

 

Satyam 102
124

Satyam 102
125
Satyam 102
17
Satyam 102
55
Satyam 102
128
Satyam 102
16
Satyam 102
130
Satyam 102
16
Satyam 102
132
Satyam 102
16
Satyam 102
134
Satyam 102
10

 

Satyam 102
136

Satyam 102
137

đầu ra.  

Satyam 102
4

‘a’ là thể hiện được tạo cho lớp Person. Nó gọi __init__[] của lớp được giới thiệu. Bạn có thể thấy ‘đối tượng’ được viết trong phần khai báo của lớp Person. Trong Python, mọi lớp kế thừa từ một lớp cơ bản dựng sẵn gọi là 'đối tượng'. nhà xây dựng tôi. e. hàm ‘__init__’ của một lớp được gọi khi chúng ta tạo một biến đối tượng hoặc một thể hiện của lớp.
Các biến được định nghĩa trong __init__[] được gọi là biến thể hiện hoặc đối tượng. Do đó, 'tên' và 'idnumber' là các đối tượng của lớp Người. Tương tự, 'salary' và 'post' là các đối tượng của lớp Nhân viên. Vì lớp Nhân viên kế thừa từ lớp Người, 'tên' và 'idnumber' cũng là đối tượng của lớp Nhân viên.

Chương trình Python để chứng minh lỗi nếu chúng ta quên gọi __init__[] của cha mẹ

Nếu bạn quên gọi __init__[] của lớp cha thì các biến thể hiện của nó sẽ không khả dụng cho lớp con.  

Đoạn mã sau tạo ra lỗi vì lý do tương tự.  

Python3




Satyam 102
0
Satyam 102
139

Satyam 102
14
Satyam 102
8
Satyam 102
9
Satyam 102
10
Satyam 102
144
Satyam 102
17
Satyam 102
128
Satyam 102
3

Satyam 102
05
Satyam 102
10____116
Satyam 102
17
Satyam 102
152

 

 

Satyam 102
0
Satyam 102
154

Satyam 102
14
Satyam 102
8
Satyam 102
9____110
Satyam 102
159

Satyam 102
05
Satyam 102
10____1162
Satyam 102
17
Satyam 102
164

 

 

Satyam 102
2
Satyam 102
17
Satyam 102
167____1168
Satyam 102
10

Satyam 102
43
Satyam 102
44
Satyam 102
2
Satyam 102
94

đầu ra.  

Satyam 102
1

Các loại thừa kế khác nhau

  • thừa kế duy nhất. Khi một lớp con chỉ kế thừa từ một lớp cha, nó được gọi là kế thừa đơn. Chúng ta đã thấy một ví dụ ở trên
  • Nhiều thừa kế. Khi một lớp con kế thừa từ nhiều lớp cha, nó được gọi là đa kế thừa.  

Không giống như java, python hiển thị nhiều kế thừa

Python3




Satyam 102
174

Satyam 102
175

 

 

Satyam 102
0
Satyam 102
177
Satyam 102
2
Satyam 102
3

Satyam 102
14
Satyam 102
8
Satyam 102
9
Satyam 102
10
Satyam 102
3

Satyam 102
05
Satyam 102
10____1187
Satyam 102
17
Satyam 102
48

Satyam 102
05
Satyam 102
43____344
Satyam 102
193
Satyam 102
10

 

 

Satyam 102
0
Satyam 102
196
Satyam 102
2
Satyam 102
3

Satyam 102
14
Satyam 102
8
Satyam 102
9
Satyam 102
10
Satyam 102
3

Satyam 102
05
Satyam 102
10____2206
Satyam 102
17
Satyam 102
56

Satyam 102
05
Satyam 102
43____344
Satyam 102
212
Satyam 102
10

 

 

Satyam 102
0
Satyam 102
215

Satyam 102
14
Satyam 102
8
Satyam 102
9
Satyam 102
10
Satyam 102
3

 

Satyam 102
05
Satyam 102
222

Satyam 102
05
Satyam 102
224

Satyam 102
05
Satyam 102
226____110
Satyam 102
10

Satyam 102
05
Satyam 102
230
Satyam 102
10
Satyam 102
10

Satyam 102
05
Satyam 102
43____344
Satyam 102
236
Satyam 102
10

 

Satyam 102
14
Satyam 102
8
Satyam 102
240
Satyam 102
10
Satyam 102
3

Satyam 102
05
Satyam 102
43____344
Satyam 102
10
Satyam 102
247
Satyam 102
10
Satyam 102
249

 

 

Satyam 102
250
Satyam 102
17
Satyam 102
252

Satyam 102
253

đầu ra.  

Satyam 102
1
  • kế thừa đa cấp. Khi chúng ta có quan hệ con cháu.  

Python3




Satyam 102
92

 

Satyam 102
920

Satyam 102
921

Satyam 102
922

Satyam 102
923

 

 

Satyam 102
0
Satyam 102
260____12
Satyam 102
3

 

Satyam 102
14
Satyam 102
6

Satyam 102
14
Satyam 102
8
Satyam 102
9____110
Satyam 102
04

Satyam 102
05
Satyam 102
10____116
Satyam 102
17
Satyam 102
18

 

Satyam 102
14
Satyam 102
11

Satyam 102
14
Satyam 102
8
Satyam 102
14
Satyam 102
10
Satyam 102
3

________ 105 ________ 118 ________ 110 ________ 116

 

 

Satyam 102
286

Satyam 102
0
Satyam 102
288

 

Satyam 102
14
Satyam 102
6

Satyam 102
14
Satyam 102
8
Satyam 102
9____110
Satyam 102
295

Satyam 102
05
Satyam 102
297
Satyam 102
10
Satyam 102
299

Satyam 102
05
Satyam 102
10____3402
Satyam 102
17
Satyam 102
404

 

Satyam 102
14
Satyam 102
11

Satyam 102
14
Satyam 102
8
Satyam 102
409
Satyam 102
10
Satyam 102
3

________ 105 ________ 118 ________ 110 ________ 3402

 

Satyam 102
286

 

 

Satyam 102
0
Satyam 102
418

 

Satyam 102
14
Satyam 102
6

Satyam 102
14
Satyam 102
8
Satyam 102
9____110
Satyam 102
425

Satyam 102
05
Satyam 102
427____110
Satyam 102
429

Satyam 102
05
Satyam 102
10____3432
Satyam 102
17
Satyam 102
434

 

Satyam 102
14
Satyam 102
436

Satyam 102
14
Satyam 102
8
Satyam 102
439
Satyam 102
10
Satyam 102
3

________ 105 ________ 118 ________ 110 ________ 3432

 

 

Satyam 102
11

Satyam 102
447
Satyam 102
17
Satyam 102
449
Satyam 102
48
Satyam 102
16
Satyam 102
168
Satyam 102
16
Satyam 102
454
Satyam 102
10

Satyam 102
43
Satyam 102
457

đầu ra.  

Satyam 102
5
  • Kế thừa phân cấp Nhiều hơn một lớp dẫn xuất được tạo từ một cơ sở duy nhất
  • thừa kế lai. Hình thức này kết hợp nhiều hình thức thừa kế. Về cơ bản, nó là sự pha trộn của nhiều kiểu thừa kế

Để biết thêm chi tiết xin vui lòng đọc bài viết này. Các kiểu kế thừa trong Python

Các thành viên private của lớp cha

Không phải lúc nào chúng ta cũng muốn các biến đối tượng của lớp cha được kế thừa bởi lớp con i. e. chúng ta có thể đặt một số biến thể hiện của lớp cha ở chế độ riêng tư, sẽ không khả dụng đối với lớp con.
Chúng ta có thể đặt một biến thể hiện ở chế độ riêng tư bằng cách thêm hai dấu gạch dưới trước tên của nó. Ví dụ:

Python3




Satyam 102
458

Satyam 102
459

 

 

Satyam 102
0
Satyam 102
461____12
Satyam 102
3

Satyam 102
14
Satyam 102
8
Satyam 102
9
Satyam 102
10
Satyam 102
3

Satyam 102
05
Satyam 102
10____3471
Satyam 102
17
Satyam 102
473

 

_______105____3475

Satyam 102
05
Satyam 102
10____3478
Satyam 102
17
Satyam 102
480

 

 

Satyam 102
0
Satyam 102
482

Satyam 102
14
Satyam 102
8
Satyam 102
9
Satyam 102
10
Satyam 102
3

Satyam 102
05
Satyam 102
10____3490
Satyam 102
17
Satyam 102
492

Satyam 102
05
Satyam 102
494
Satyam 102
10
Satyam 102
10

 

 

________ 3497 ________ 117 ________ 3499

 

Satyam 102
100

_______343____4102

đầu ra.  

Satyam 102
3

Vì 'd' được đặt ở chế độ riêng tư bởi các dấu gạch dưới đó, nên nó không khả dụng đối với lớp con 'D' và do đó xảy ra lỗi

Có phải mọi lớp Python đều kế thừa từ đối tượng không?

Tất cả các lớp trong Python đều là đối tượng của lớp kiểu, và lớp kiểu này được gọi là Metaclass. Mỗi lớp trong Python, theo mặc định, kế thừa từ lớp cơ sở đối tượng .

Có thể kế thừa từ đối tượng không?

Vì vậy, CÓ, mọi thứ [ngoại trừ nguyên thủy] đều kế thừa từ Đối tượng trong Java . CHỈNH SỬA. Java áp dụng cách tiếp cận "Mọi thứ đều là đối tượng". Nó sắp xếp các lực lượng lập trình hướng đối tượng. Nếu lớp A không mở rộng lớp khác thì nó vốn đã mở rộng Đối tượng.

Ưu điểm của việc sử dụng tính kế thừa trong Python là gì?

Ưu điểm của tính kế thừa trong Python . Mỗi khi một lớp kế thừa lớp cơ sở, nó sẽ có quyền truy cập vào chức năng của đối tượng cha. Khả năng sử dụng lại do kế thừa cũng đáng tin cậy vì lớp cơ sở đã được kiểm tra. helps developers to reuse the objects. Each time a class inherits the base class, it gets access to the parent object's functionality. Reusability due to inheritance is also reliable as the base class is already tested.

Tại sao thành phần tốt hơn thừa kế?

Một lợi ích nữa của sáng tác so với thừa kế là phạm vi thử nghiệm . Kiểm tra đơn vị dễ dàng trong thành phần vì chúng tôi biết tất cả các phương thức chúng tôi đang sử dụng từ lớp khác. Chúng ta có thể mô phỏng nó để thử nghiệm trong khi thừa kế, chúng ta phụ thuộc rất nhiều vào siêu lớp và không biết tất cả các phương thức của siêu lớp sẽ được sử dụng.

Chủ Đề