Kế thừa Python
Kế thừa Python
Tính kế thừa cho phép chúng ta định nghĩa một lớp kế thừa tất cả các phương thức và thuộc tính từ một lớp khác.
Lớp cha là lớp được kế thừa, còn được gọi là lớp cơ sở.
Lớp con là lớp kế thừa từ lớp khác, còn được gọi là lớp dẫn xuất.
Tạo lớp cha mẹ
Bất kỳ lớp nào cũng có thể là lớp cha, vì vậy cú pháp giống như tạo bất kỳ lớp nào khác:
Thí dụ
Tạo một lớp có tên Person
, với
firstname
và lastname
thuộc tính và một printname
phương thức:
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname,
self.lastname)
#Use the Person class to create an object, and then
execute the printname method:
x = Person("John", "Doe")
x.printname()
Tạo lớp trẻ em
Để tạo một lớp kế thừa chức năng từ một lớp khác, hãy gửi lớp cha làm tham số khi tạo lớp con:
Thí dụ
Tạo một lớp có tên Student
, lớp này sẽ kế thừa các thuộc tính và phương thức từ Person
lớp:
class Student(Person):
pass
Lưu ý: Sử dụng pass
từ khóa khi bạn không muốn thêm bất kỳ thuộc tính hoặc phương thức nào khác vào lớp.
Bây giờ lớp Student có các thuộc tính và phương thức giống như lớp Person.
Thí dụ
Sử dụng Student
lớp để tạo một đối tượng, sau đó thực thi printname
phương thức:
x = Student("Mike", "Olsen")
x.printname()
Thêm hàm __init __ ()
Cho đến nay chúng ta đã tạo một lớp con kế thừa các thuộc tính và phương thức từ lớp cha của nó.
Chúng tôi muốn thêm __init__()
chức năng vào lớp con (thay vì pass
từ khóa).
Lưu ý: Hàm __init__()
được gọi tự động mỗi khi lớp được sử dụng để tạo một đối tượng mới.
Thí dụ
Thêm __init__()
chức năng vào
Student
lớp:
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
Khi bạn thêm __init__()
hàm, lớp con sẽ không kế thừa hàm của lớp cha __init__()
nữa.
Lưu ý:__init__()
Hàm của con ghi đè lên sự kế thừa của
__init__()
hàm của mẹ.
Để giữ tính kế thừa của hàm cha __init__()
, hãy thêm một lệnh gọi vào hàm cha __init__()
:
Thí dụ
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
Bây giờ chúng ta đã thêm thành công hàm __init __ () và giữ nguyên kế thừa của lớp cha và chúng ta đã sẵn sàng thêm chức năng vào trong
__init__()
hàm.
Sử dụng hàm super ()
Python cũng có một super()
hàm làm cho lớp con kế thừa tất cả các phương thức và thuộc tính từ lớp cha của nó:
Thí dụ
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
Bằng cách sử dụng super()
hàm, bạn không cần phải sử dụng tên của phần tử cha, nó sẽ tự động kế thừa các phương thức và thuộc tính từ phần tử cha của nó.
Thêm thuộc tính
Thí dụ
Thêm thuộc tính được gọi graduationyear
vào
Student
lớp:
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear
= 2019
Trong ví dụ dưới đây, năm 2019
phải là một biến và được chuyển vào
Student
lớp khi tạo các đối tượng sinh viên. Để làm như vậy, hãy thêm một tham số khác trong hàm __init __ ():
Thí dụ
Thêm một year
tham số và chuyển năm chính xác khi tạo các đối tượng:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
x = Student("Mike", "Olsen", 2019)
Thêm phương pháp
Thí dụ
Thêm một phương thức được gọi welcome
vào
Student
lớp:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
def welcome(self):
print("Welcome",
self.firstname, self.lastname, "to the class of", self.graduationyear)
Nếu bạn thêm một phương thức trong lớp con có cùng tên với một hàm trong lớp cha, thì sự kế thừa của phương thức mẹ sẽ bị ghi đè.