Bài viết đăng tại: https://programming.laptrinh.site
Trong Python, chúng ta có thể mở rộng một lớp để tạo một lớp mới từ lớp hiện có. Điều này trở nên khả thi vì Python hỗ trợ tính năng kế thừa.
Sử dụng tính kế thừa, chúng ta có thể tạo một lớp con với tất cả các tính năng và phương thức của lớp cha. Chúng ta cũng có thể thêm các tính năng mới vào lớp con ngoài những tính năng có trong lớp cha.
Chúng ta thậm chí có thể ghi đè những tính năng của lớp cha mà chúng ta không cần. Bạn sẽ học cách làm tất cả những điều đó khi xem qua bài viết này.
Nội dung
Mở rộng một lớp trong Python
Nói một cách đơn giản, mở rộng một lớp có nghĩa là chúng ta muốn tạo một lớp mới hoặc lớp con từ một lớp cha hoặc lớp hiện có. Mở rộng một lớp cũng giống như kế thừa một lớp.
Hãy cho chúng tôi xem cách tính kế thừa hoạt động trong Python.
Mở rộng một lớp bằng tính kế thừa trong Python
Để kế thừa một lớp trong Python, chúng ta truyền tên của lớp đó làm tham số trong khi tạo lớp con.
Cú pháp:
class ChildClass(ParentClass)
Hãy để chúng tôi hiểu điều này với một ví dụ.
Đầu tiên chúng ta tạo một lớp cha, Desserts
, với hai phương thức – init
và intro
. Phần intro
phương thức có một câu lệnh in in hương vị và màu sắc được hiển thị trong đầu ra.
class Desserts:
def __init__(self, flavor, color):
self.flavor = flavor
self.color = color
def intro(self):
print(self.flavor, self.color)
obj = Desserts("Vanilla", "Pink")
obj.intro()
Đầu ra:
Vanilla Pink
Chúng ta tạo lớp con Cake
sẽ kế thừa lớp Desserts
. Để lớp Cake
kế thừa lớp Desserts
, chúng ta sẽ chuyển tên của lớp Desserts
làm tham số trong khi tạo lớp Cake
.
class Cake (Desserts):
pass
Chúng tôi đang sử dụng từ khóa pass
ở đây vì chúng tôi chỉ kế thừa lớp Desserts
và không thêm bất kỳ phương thức hoặc tính năng nào khác vào lớp con Cake
. Bây giờ lớp cake
có các thuộc tính và phương thức giống như lớp Desserts
.
Chúng ta có thể xác minh điều này bằng cách tạo một đối tượng của lớp Cake
và sau đó thực thi phương thức intro
như được hiển thị trong hai dòng mã cuối cùng.
class Desserts:
def __init__(self, flavor, color):
self.flavor = flavor
self.color = color
def intro(self):
print(self.flavor, self.color)
obj = Desserts("Vanilla", "Pink")
obj.intro()
class Cake(Desserts):
pass
obj = Cake("Black forest", "Black")
obj.intro()
Đầu ra:
Vanilla Pink
Black forest Black
Xem cách lớp Cake
cũng thực thi phương thức intro
giống như lớp Desserts
.
Hãy xem cách chúng ta có thể thêm nhiều phương thức và thuộc tính vào lớp con mới tạo này.
Thêm Hàm __init__()
vào Lớp con sau khi mở rộng Lớp
Chúng ta có thể thêm một hàm init()
mới vào lớp con ngay cả khi kế thừa một lớp. Lưu ý rằng bất cứ khi nào một đối tượng của lớp được tạo, hàm init()
sẽ tự động được gọi.
Ngoài ra, việc thêm hàm init()
vào lớp con sẽ không sử dụng hàm init()
của lớp cha.
class Cake (Desserts):
def __init__(self, flavor, color):
self . flavor = flavor
self . color = color
Mặc dù phương thức init()
của lớp con ghi đè tính kế thừa của phương thức init()
của lớp cha, nhưng chúng ta vẫn có thể sử dụng phương thức init()
() của lớp cha bằng cách gọi nó như sau:
class Cake (Desserts):
def __init__(self, flavor, color):
Desserts . __init__(self, flavor, color)
Sử dụng hàm super()
sau khi mở rộng một lớp trong Python
Trong Python, hàm super()
có thể được sử dụng để truy cập các thuộc tính và phương thức của lớp cha.
Khi có một init()
mới bên trong một lớp con đang sử dụng phương thức init()
của lớp cha, thì chúng ta có thể sử dụng hàm super()
để kế thừa tất cả các phương thức và thuộc tính từ lớp cha.
class Cake (Desserts):
def __init__(self, flavor, color):
super () . __init__(flavor, color)
Lưu ý rằng ở đây, chúng tôi không chỉ định tên của lớp cha; chức năng super()
tự động xác định nó.
Đây là tất cả những điều cơ bản về kế thừa trong Python.
Nhưng nếu chúng ta phải thêm nhiều thuộc tính hoặc phương thức vào lớp con thì sao? Hãy để chúng tôi xem làm thế nào chúng ta có thể làm điều đó.
Thêm thuộc tính vào lớp con sau khi mở rộng lớp trong Python
Chúng ta có thể thêm các thuộc tính bổ sung vào một lớp con ngoài những thuộc tính được kế thừa bởi lớp cha giống như chúng ta thêm bất kỳ thuộc tính nào khác. Xem cách một thuộc tính có tên là quantity
được thêm vào lớp Cake
.
class Cake (Desserts):
def __init__(self, flavor, color, quantity):
super () . __init__(flavor, color)
self . quantity = quantity
Chúng tôi đã thêm một tham số nữa trong hàm init()
của lớp con. Ngoài ra, đừng quên truyền thêm một giá trị cho quantity
trong khi tạo đối tượng của lớp Cake
, như sau:
obj = Cake("Black forest", "Black", 5)
Thêm phương thức vào lớp con sau khi mở rộng lớp trong Python
Chúng tôi thêm một price
phương thức trong lớp con bằng cách sử dụng từ khóa def
trong mã bên dưới. Chúng tôi cũng chuyển từ khóa self
làm tham số.
class Cake (Desserts):
def __init__(self, flavor, color, quantity):
super () . __init__(flavor, color)
self . quantity = quantity
def price (self):
print ( "Pay for: " , self . quantity, "items." )
Toàn bộ mã sẽ như sau:
class Desserts:
def __init__(self, flavor, color):
self.flavor = flavor
self.color = color
def intro(self):
print(self.flavor, self.color)
obj = Desserts("Vanilla", "Pink")
obj.intro()
class Cake(Desserts):
def __init__(self, flavor, color, quantity):
super().__init__(flavor, color)
self.quantity = quantity
def price(self):
print("Pay for: ", self.quantity, "items")
obj = Cake("Black forest", "Black", 5)
obj.intro()
obj.price()
Đầu ra:
Vanilla Pink
Black forest Black
Pay for: 5 items
Lưu ý rằng việc thêm một phương thức có cùng tên với bất kỳ phương thức nào trong lớp cha sẽ ghi đè lên phương thức kế thừa.
Đây là cách chúng ta có thể mở rộng một lớp trong Python. Tham khảo tài liệu chính thức này để tìm hiểu thêm.
URL Link
https://laptrinh.site/mo-rong-mot-lop-trong-python/
Viết bởi Duy Mạnh. Đã đăng ký bản quyền tác giả tại Creativecommons và DMCA