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 10292
Satyam 1020
Satyam 1021
Satyam 1022____13
Satyam 1024
Satyam 1024
Satyam 1026
Satyam 1024
Satyam 1028
Satyam 1029
Satyam 10210
Satyam 10211
Satyam 10212
Satyam 1023
Satyam 10214
Satyam 10210
Satyam 10216
Satyam 10217
Satyam 10218
Satyam 10214
Satyam 10210
Satyam 10221
Satyam 10212
Satyam 10217
Satyam 10212
Satyam 1024
Satyam 10226
Satyam 1024
Satyam 1028
Satyam 10229
Satyam 10210
Satyam 1023
Satyam 10214
Satyam 10243
Satyam 10244
Satyam 10210
Satyam 10246
Satyam 10210
Satyam 10221
Satyam 10212
Satyam 10210
Satyam 10211
Satyam 10212
Satyam 10217
Satyam 1021_______415
Satyam 10216
Satyam 10217
Satyam 10210
Satyam 10219
Satyam 10210
đầ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 1020
Satyam 10212
Satyam 1024
Satyam 1024
Satyam 1028
Satyam 10216
Satyam 10244
Satyam 10210
Satyam 1023
Satyam 10214
Satyam 10243
Satyam 10244
Satyam 10253
Satyam 10210
Satyam 10214
Satyam 10256
Satyam 10217
Satyam 10258
Satyam 10259
Satyam 10216
Satyam 10231____410
Satyam 10233
Satyam 10234
Satyam 10235
Satyam 10236____516
Satyam 10238
đầu ra
Satyam 1021
Ví dụ về tính kế thừa trong Python
Python3
Satyam 10292
Satyam 102920
Satyam 102921
Satyam 102922
Satyam 102923
Satyam 1020
Satyam 1021
Satyam 1022____13
Satyam 10214
Satyam 1026
Satyam 10214
Satyam 1028
Satyam 1029____110
Satyam 10204
Satyam 10205
Satyam 10210____116
Satyam 10217
Satyam 10218
Satyam 10214
Satyam 10211
Satyam 10214
Satyam 1028
Satyam 10214
Satyam 10210
Satyam 1023
________ 105 ________ 118 ________ 110 ________ 116
Satyam 10214
Satyam 10226
Satyam 10214
Satyam 1028
Satyam 10225
Satyam 10210
Satyam 1023
________ 105 ________ 118 ________ 130
Satyam 10231
Satyam 1020
Satyam 10233
Satyam 10214
Satyam 10235
Satyam 10214
Satyam 1028
Satyam 10225
Satyam 10210
Satyam 1023
________ 105 ________ 118 ________ 143
Satyam 10211
Satyam 10212
Satyam 10217
Satyam 1021____148
Satyam 10249
Satyam 10219
Satyam 10243
Satyam 10252
Satyam 10212
Satyam 10217
Satyam 10255____156
Satyam 10249
Satyam 10258
Satyam 10243
Satyam 10252
đầu ra.
Satyam 1022
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 10261
Satyam 10262
Satyam 10263
Satyam 1020
Satyam 1021
Satyam 1022____13
Satyam 10214
Satyam 10269
Satyam 10214
Satyam 1028
Satyam 1029____110
Satyam 10274
Satyam 10205
Satyam 10210____116
Satyam 10217
Satyam 10218
Satyam 10205
Satyam 10210____182
Satyam 10217
Satyam 10284
Satyam 10214
Satyam 1028
Satyam 10287
Satyam 10210
Satyam 1023
Satyam 10205
Satyam 10243____344
Satyam 10210
Satyam 10294
Satyam 10205
Satyam 10243____344
Satyam 10210
Satyam 10299
Satyam 102100
Satyam 1020
Satyam 10233
Satyam 10214
Satyam 1028
Satyam 1029____110
Satyam 102107
Satyam 10205
Satyam 10210
Satyam 102110
Satyam 10217
Satyam 102112
Satyam 10205
Satyam 10210____1115
Satyam 10217
Satyam 102117
Satyam 10205
Satyam 102119
Satyam 10205
Satyam 102121____110
Satyam 102123
Satyam 102124
Satyam 102125
Satyam 10217
Satyam 10255
Satyam 102128
Satyam 10216
Satyam 102130
Satyam 10216
Satyam 102132
Satyam 10216
Satyam 102134
Satyam 10210
Satyam 102136
Satyam 102137
đầu ra.
Satyam 1024
‘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 1020
Satyam 102139
Satyam 10214
Satyam 1028
Satyam 1029
Satyam 10210
Satyam 102144
Satyam 10217
Satyam 102128
Satyam 1023
Satyam 10205
Satyam 10210____116
Satyam 10217
Satyam 102152
Satyam 1020
Satyam 102154
Satyam 10214
Satyam 1028
Satyam 1029____110
Satyam 102159
Satyam 10205
Satyam 10210____1162
Satyam 10217
Satyam 102164
Satyam 1022
Satyam 10217
Satyam 102167____1168
Satyam 10210
Satyam 10243
Satyam 10244
Satyam 1022
Satyam 10294
đầu ra.
Satyam 1021
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 102174
Satyam 102175
Satyam 1020
Satyam 102177
Satyam 1022
Satyam 1023
Satyam 10214
Satyam 1028
Satyam 1029
Satyam 10210
Satyam 1023
Satyam 10205
Satyam 10210____1187
Satyam 10217
Satyam 10248
Satyam 10205
Satyam 10243____344
Satyam 102193
Satyam 10210
Satyam 1020
Satyam 102196
Satyam 1022
Satyam 1023
Satyam 10214
Satyam 1028
Satyam 1029
Satyam 10210
Satyam 1023
Satyam 10205
Satyam 10210____2206
Satyam 10217
Satyam 10256
Satyam 10205
Satyam 10243____344
Satyam 102212
Satyam 10210
Satyam 1020
Satyam 102215
Satyam 10214
Satyam 1028
Satyam 1029
Satyam 10210
Satyam 1023
Satyam 10205
Satyam 102222
Satyam 10205
Satyam 102224
Satyam 10205
Satyam 102226____110
Satyam 10210
Satyam 10205
Satyam 102230
Satyam 10210
Satyam 10210
Satyam 10205
Satyam 10243____344
Satyam 102236
Satyam 10210
Satyam 10214
Satyam 1028
Satyam 102240
Satyam 10210
Satyam 1023
Satyam 10205
Satyam 10243____344
Satyam 10210
Satyam 102247
Satyam 10210
Satyam 102249
Satyam 102250
Satyam 10217
Satyam 102252
Satyam 102253
đầu ra.
Satyam 1021
- kế thừa đa cấp. Khi chúng ta có quan hệ con cháu.
Python3
Satyam 10292
Satyam 102920
Satyam 102921
Satyam 102922
Satyam 102923
Satyam 1020
Satyam 102260____12
Satyam 1023
Satyam 10214
Satyam 1026
Satyam 10214
Satyam 1028
Satyam 1029____110
Satyam 10204
Satyam 10205
Satyam 10210____116
Satyam 10217
Satyam 10218
Satyam 10214
Satyam 10211
Satyam 10214
Satyam 1028
Satyam 10214
Satyam 10210
Satyam 1023
________ 105 ________ 118 ________ 110 ________ 116
Satyam 102286
Satyam 1020
Satyam 102288
Satyam 10214
Satyam 1026
Satyam 10214
Satyam 1028
Satyam 1029____110
Satyam 102295
Satyam 10205
Satyam 102297
Satyam 10210
Satyam 102299
Satyam 10205
Satyam 10210____3402
Satyam 10217
Satyam 102404
Satyam 10214
Satyam 10211
Satyam 10214
Satyam 1028
Satyam 102409
Satyam 10210
Satyam 1023
________ 105 ________ 118 ________ 110 ________ 3402
Satyam 102286
Satyam 1020
Satyam 102418
Satyam 10214
Satyam 1026
Satyam 10214
Satyam 1028
Satyam 1029____110
Satyam 102425
Satyam 10205
Satyam 102427____110
Satyam 102429
Satyam 10205
Satyam 10210____3432
Satyam 10217
Satyam 102434
Satyam 10214
Satyam 102436
Satyam 10214
Satyam 1028
Satyam 102439
Satyam 10210
Satyam 1023
________ 105 ________ 118 ________ 110 ________ 3432
Satyam 10211
Satyam 102447
Satyam 10217
Satyam 102449
Satyam 10248
Satyam 10216
Satyam 102168
Satyam 10216
Satyam 102454
Satyam 10210
Satyam 10243
Satyam 102457
đầu ra.
Satyam 1025
- 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 102458
Satyam 102459
Satyam 1020
Satyam 102461____12
Satyam 1023
Satyam 10214
Satyam 1028
Satyam 1029
Satyam 10210
Satyam 1023
Satyam 10205
Satyam 10210____3471
Satyam 10217
Satyam 102473
_______105____3475
Satyam 10205
Satyam 10210____3478
Satyam 10217
Satyam 102480
Satyam 1020
Satyam 102482
Satyam 10214
Satyam 1028
Satyam 1029
Satyam 10210
Satyam 1023
Satyam 10205
Satyam 10210____3490
Satyam 10217
Satyam 102492
Satyam 10205
Satyam 102494
Satyam 10210
Satyam 10210
________ 3497 ________ 117 ________ 3499
Satyam 102100
_______343____4102
đầu ra.
Satyam 1023
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