Triển khai các hàm add sub và mul bằng cách sử dụng kế thừa lai trong Python

Kế thừa là một khía cạnh quan trọng của mô hình hướng đối tượng. Kế thừa cung cấp khả năng sử dụng lại mã cho chương trình vì chúng ta có thể sử dụng một lớp hiện có để tạo một lớp mới thay vì tạo nó từ đầu

Trong kế thừa, lớp con có được các thuộc tính và có thể truy cập tất cả các thành viên dữ liệu và chức năng được xác định trong lớp cha. Một lớp con cũng có thể cung cấp cách triển khai cụ thể của nó cho các chức năng của lớp cha. Trong phần này của hướng dẫn, chúng ta sẽ thảo luận chi tiết về thừa kế

Trong python, một lớp dẫn xuất có thể kế thừa lớp cơ sở bằng cách chỉ cần nhắc đến cơ sở trong dấu ngoặc sau tên lớp dẫn xuất. Xem xét cú pháp sau để kế thừa một lớp cơ sở vào lớp dẫn xuất

cú pháp

Một lớp có thể kế thừa nhiều lớp bằng cách đề cập tất cả chúng bên trong dấu ngoặc. Hãy xem xét cú pháp sau

cú pháp

ví dụ 1

đầu ra

dog barking
Animal Speaking

Kế thừa đa cấp Python

Có thể kế thừa đa cấp trong python giống như các ngôn ngữ hướng đối tượng khác. Kế thừa đa cấp được lưu trữ khi một lớp dẫn xuất kế thừa một lớp dẫn xuất khác. Không có giới hạn về số lượng cấp độ, kế thừa đa cấp được lưu trữ trong python

Cú pháp kế thừa đa cấp được đưa ra dưới đây

cú pháp

Thí dụ

đầu ra

dog barking
Animal Speaking
Eating bread...

Đa kế thừa Python

Python cung cấp cho chúng ta sự linh hoạt để kế thừa nhiều lớp cơ sở trong lớp con

Cú pháp để thực hiện đa thừa kế được đưa ra dưới đây

cú pháp

Thí dụ

đầu ra

Phương thức issubclass[sub,sup]

Phương thức issubclass[sub, sup] được sử dụng để kiểm tra mối quan hệ giữa các lớp được chỉ định. Nó trả về true nếu lớp đầu tiên là lớp con của lớp thứ hai và sai nếu ngược lại

Xem xét ví dụ sau

Thí dụ

đầu ra

Phương thức isinstance [obj, class]

Phương thức isinstance[] được sử dụng để kiểm tra mối quan hệ giữa các đối tượng và các lớp. Nó trả về true nếu tham số đầu tiên, i. e. , obj là thể hiện của tham số thứ hai, i. e. , lớp

Xem xét ví dụ sau

Thí dụ

đầu ra

Ghi đè phương thức

Chúng tôi có thể cung cấp một số triển khai cụ thể của phương thức lớp cha trong lớp con của chúng tôi. Khi phương thức của lớp cha được định nghĩa trong lớp con với một số triển khai cụ thể, thì khái niệm này được gọi là ghi đè phương thức. Chúng ta có thể cần thực hiện ghi đè phương thức trong trường hợp cần định nghĩa khác về phương thức của lớp cha trong lớp con

Xét ví dụ sau để thực hiện ghi đè phương thức trong python

Thí dụ

đầu ra

Ví dụ thực tế về ghi đè phương thức

đầu ra

Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8

Trừu tượng hóa dữ liệu trong python

Trừu tượng hóa là một khía cạnh quan trọng của lập trình hướng đối tượng. Trong python, chúng ta cũng có thể thực hiện ẩn dữ liệu bằng cách thêm dấu gạch dưới kép [___] làm tiền tố cho thuộc tính cần ẩn. Sau này, thuộc tính sẽ không hiển thị bên ngoài lớp thông qua đối tượng

Nó đề cập đến việc xác định một lớp mới với ít hoặc không sửa đổi lớp hiện có. Lớp mới được gọi là lớp dẫn xuất [hoặc lớp con] và lớp mà nó kế thừa từ đó được gọi là lớp cơ sở [hoặc lớp cha]

Cú pháp kế thừa Python

class BaseClass:
  Body of base class
class DerivedClass[BaseClass]:
  Body of derived class

Lớp dẫn xuất kế thừa các tính năng từ lớp cơ sở nơi các tính năng mới có thể được thêm vào nó. Điều này dẫn đến khả năng sử dụng lại mã

Ví dụ về tính kế thừa trong Python

Để chứng minh việc sử dụng thừa kế, chúng ta hãy lấy một ví dụ

Đa giác là hình khép kín có 3 cạnh trở lên. Giả sử, chúng ta có một lớp tên là

Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8
2 được định nghĩa như sau

class Polygon:
    def __init__[self, no_of_sides]:
        self.n = no_of_sides
        self.sides = [0 for i in range[no_of_sides]]

    def inputSides[self]:
        self.sides = [float[input["Enter side "+str[i+1]+" : "]] for i in range[self.n]]

    def dispSides[self]:
        for i in range[self.n]:
            print["Side",i+1,"is",self.sides[i]]

Lớp này có các thuộc tính dữ liệu để lưu trữ số cạnh n và độ lớn của mỗi cạnh dưới dạng danh sách được gọi là các mặt

Phương pháp

Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8
3 lấy độ lớn của mỗi cạnh và
Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8
4 hiển thị độ dài các cạnh này

Tam giác là đa giác có 3 cạnh. Vì vậy, chúng ta có thể tạo một lớp gọi là Tam giác kế thừa từ Đa giác. Điều này làm cho tất cả các thuộc tính của lớp Đa giác có sẵn cho lớp Tam giác

Chúng tôi không cần phải xác định lại chúng [khả năng sử dụng lại mã]. Tam giác có thể được định nghĩa như sau

class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]

Tuy nhiên, lớp

Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8
5 có một phương pháp mới
class Polygon:
    def __init__[self, no_of_sides]:
        self.n = no_of_sides
        self.sides = [0 for i in range[no_of_sides]]

    def inputSides[self]:
        self.sides = [float[input["Enter side "+str[i+1]+" : "]] for i in range[self.n]]

    def dispSides[self]:
        for i in range[self.n]:
            print["Side",i+1,"is",self.sides[i]]
0 để tìm và in diện tích tam giác. Đây là một mẫu chạy

>>> t = Triangle[]

>>> t.inputSides[]
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4

>>> t.dispSides[]
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0

>>> t.findArea[]
The area of the triangle is 6.00

Chúng ta có thể thấy rằng mặc dù chúng ta không định nghĩa các phương thức như

Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8
3 hoặc
Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8
4 cho lớp
Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8
5 một cách riêng biệt, chúng ta vẫn có thể sử dụng chúng

Nếu một thuộc tính không được tìm thấy trong chính lớp đó, việc tìm kiếm sẽ tiếp tục đến lớp cơ sở. Điều này lặp lại một cách đệ quy, nếu chính lớp cơ sở được dẫn xuất từ ​​các lớp khác

Ghi đè phương thức trong Python

Trong ví dụ trên, lưu ý rằng phương thức

class Polygon:
    def __init__[self, no_of_sides]:
        self.n = no_of_sides
        self.sides = [0 for i in range[no_of_sides]]

    def inputSides[self]:
        self.sides = [float[input["Enter side "+str[i+1]+" : "]] for i in range[self.n]]

    def dispSides[self]:
        for i in range[self.n]:
            print["Side",i+1,"is",self.sides[i]]
4 được định nghĩa trong cả hai lớp, Tam giác cũng như Đa giác. Khi điều này xảy ra, phương thức trong lớp dẫn xuất sẽ ghi đè phương thức trong lớp cơ sở. Điều này có nghĩa là,
class Polygon:
    def __init__[self, no_of_sides]:
        self.n = no_of_sides
        self.sides = [0 for i in range[no_of_sides]]

    def inputSides[self]:
        self.sides = [float[input["Enter side "+str[i+1]+" : "]] for i in range[self.n]]

    def dispSides[self]:
        for i in range[self.n]:
            print["Side",i+1,"is",self.sides[i]]
4 trong Tam giác được ưu tiên hơn
class Polygon:
    def __init__[self, no_of_sides]:
        self.n = no_of_sides
        self.sides = [0 for i in range[no_of_sides]]

    def inputSides[self]:
        self.sides = [float[input["Enter side "+str[i+1]+" : "]] for i in range[self.n]]

    def dispSides[self]:
        for i in range[self.n]:
            print["Side",i+1,"is",self.sides[i]]
6 trong Đa giác

Nói chung, khi ghi đè một phương thức cơ sở, chúng ta có xu hướng mở rộng định nghĩa hơn là chỉ thay thế nó. Điều tương tự cũng được thực hiện bằng cách gọi phương thức trong lớp cơ sở từ phương thức trong lớp dẫn xuất [gọi

class Polygon:
    def __init__[self, no_of_sides]:
        self.n = no_of_sides
        self.sides = [0 for i in range[no_of_sides]]

    def inputSides[self]:
        self.sides = [float[input["Enter side "+str[i+1]+" : "]] for i in range[self.n]]

    def dispSides[self]:
        for i in range[self.n]:
            print["Side",i+1,"is",self.sides[i]]
7 từ
class Polygon:
    def __init__[self, no_of_sides]:
        self.n = no_of_sides
        self.sides = [0 for i in range[no_of_sides]]

    def inputSides[self]:
        self.sides = [float[input["Enter side "+str[i+1]+" : "]] for i in range[self.n]]

    def dispSides[self]:
        for i in range[self.n]:
            print["Side",i+1,"is",self.sides[i]]
4 trong
Bank Rate of interest: 10
SBI Rate of interest: 7
ICICI Rate of interest: 8
5]

Một lựa chọn tốt hơn là sử dụng chức năng tích hợp sẵn

class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
0. Vì vậy,
class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
1 tương đương với
class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
2 và được ưu tiên. Để tìm hiểu thêm về hàm
class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
0 trong Python, hãy truy cập Hàm super[] của Python

Hai hàm có sẵn

class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
4 và
class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
5 dùng để kiểm tra thừa kế

Hàm

class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
4 trả về
class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
7 nếu đối tượng là một thể hiện của lớp hoặc các lớp khác dẫn xuất từ ​​nó. Mỗi và mọi lớp trong Python kế thừa từ lớp cơ sở
class Triangle[Polygon]:
    def __init__[self]:
        Polygon.__init__[self,3]

    def findArea[self]:
        a, b, c = self.sides
        # calculate the semi-perimeter
        s = [a + b + c] / 2
        area = [s*[s-a]*[s-b]*[s-c]] ** 0.5
        print['The area of the triangle is %0.2f' %area]
8

Kế thừa lai được thực hiện như thế nào trong Python?

Ví dụ .
# Tạo một lớp Cơ sở có tên là Đại học. lớp đại học. def __init__[bản thân]. .
khóa học [Đại học]. def __init__[bản thân]. .
# Lớp dẫn xuất thứ 2 hoặc lớp con của lớp đại học. lớp Chi nhánh [Đại học]. .
# Lớp dẫn xuất hoặc lớp con của khóa học và nhánh. lớp Sinh viên[Khóa, Chi nhánh]

Kế thừa lai trong Python với ví dụ là gì?

Kế thừa lai là sự pha trộn của nhiều loại thừa kế. Lớp được dẫn xuất từ ​​hai lớp như trong đa kế thừa. Tuy nhiên, một trong các lớp cha không phải là lớp cơ sở. Nó là một lớp dẫn xuất

Di truyền lai được thực hiện như thế nào?

Đối với Đa kế thừa, Lớp D được kế thừa từ hai lớp khác. Nó có nguồn gốc từ cả Loại B và Loại C . Theo cách tương tự, đối với Kế thừa đơn lẻ, Lớp B có nguồn gốc từ Lớp A. Do đó, chuỗi các con đường Thừa kế khác nhau này tạo thành Thừa kế Hỗn hợp.

Kế thừa thực hiện kế thừa trong Python như thế nào?

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 từ đó, 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 gọi là lớp dẫn xuất.

Chủ Đề