Thay vì bắt đầu từ đầu, bạn có thể tạo một lớp bằng cách dẫn xuất nó từ một lớp đã có trước bằng cách liệt kê lớp cha trong ngoặc đơn sau tên lớp mới.
Lớp con kế thừa các thuộc tính của lớp cha của nó và bạn có thể sử dụng các thuộc tính đó như thể chúng được định nghĩa trong lớp con. Một lớp con cũng có thể ghi đè các thành viên và phương thức dữ liệu từ lớp cha.
Cú pháp
Các lớp có nguồn gốc được khai báo giống như lớp cha của chúng; tuy nhiên, danh sách các lớp cơ sở để kế thừa được đưa ra sau tên lớp -
class SubClassName (ParentClass1 [, ParentClass2, ...]):'Chuỗi tài liệu lớp tùy chọn'class_suite
Ví dụ
#! / usr / bin / pythonclass Parent:# xác định lớp cha parentAttr =100 def __init __ (self):print "Gọi hàm tạo cha" def parentMethod (self):print 'Gọi phương thức cha' def setAttr (self, attr ):Parent.parentAttr =attr def getAttr (self):print "Thuộc tính cha:", Parent.parentAttrclass Con (Parent):# xác định lớp con def __init __ (self):print "Gọi hàm tạo con" def childMethod (self):print 'Đang gọi phương thức con'c =Child () # thể hiện của childc.childMethod () # con gọi methodc.parentMethod () # gọi lại methodc.setAttr (200) # của cha mẹ lại gọi methodc.getAttr () # của cha mẹ một lần nữa phương pháp
Đầu ra
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -
Gọi phương thức con Gọi phương thức con Gọi phương thức mẹ Thuộc tính mẹ:200
Theo cách tương tự, bạn có thể điều khiển một lớp từ nhiều lớp cha như sau -
class A:# định nghĩa lớp A của bạn ..... lớp B:# xác định lớp B của bạn ..... lớp C (A, B):# lớp con của A và B .....Bạn có thể sử dụng các hàm Issubclass () hoặc isinstance () để kiểm tra mối quan hệ của hai lớp và phiên bản.
- Lớp Issub (sub, sup) hàm boolean trả về true nếu lớp con đã cho thực sự là lớp con của lớp cha sup.
- isinstance (obj, Class) hàm boolean trả về true nếu obj là một thể hiện của lớp Class hoặc là một thể hiện của một lớp con của Class