Mở rộng một lớp trong Python

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.

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 – initintro . 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