Hướng dẫn what is inheritance with real time example in python? - kế thừa với ví dụ thời gian thực trong python là gì?

Thừa kế trong Python

Kế thừa là một tính năng mạnh mẽ trong lập trình hướng đối tượng.

Nó đề cập đến việc xác định một lớp mới có ít hoặc không có sửa đổi cho một lớp hiện có. Lớp mới được gọi là lớp dẫn xuất (hoặc trẻ em) và lớp mà nó thừa hưởng được gọi là lớp cơ sở (hoặc cha mẹ).derived (or child) class and the one from which it inherits is called the base (or parent) class.


Cú pháp kế thừa Python

class BaseClass:
  Body of base class
class DerivedClass(BaseClass):
  Body of derived class

Các lớp có nguồn gốc 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 tái sử dụng mã.


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

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

Một đa giác là một hình đóng với 3 cạnh trở lên. Giả sử, chúng ta có một lớp gọi 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])
6 đượ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 bên dưới dạng một danh sách được gọi là các bên.

Phương pháp

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 có độ lớn của mỗi bên và
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])
8 hiển thị các độ dài bên này.

Một tam giác là một đa giác với 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 ta không cần xác định lại chúng (khả năng tái sử dụng 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

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])
9 có một phương pháp mớ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)
0 để tìm và in khu vực của 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 xác định các phương thức như

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 hoặ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])
8 cho lớp
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])
9 một cách riêng biệt, chúng ta đã có thể sử dụng chúng.

Nếu một thuộc tính không được tìm thấy trong bản thân lớp, tìm kiếm tiếp tục đến lớp cơ sở. Điều này lặp lại đệ quy, nếu lớp cơ sở có nguồn gốc từ các lớp khác.


Phương pháp ghi đè trong Python

Trong ví dụ trên, lưu ý rằng phương pháp

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 đã được xác định 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 đè lên trong lớp cơ sở. Điều này có nghĩa là,
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 trong tam giác được ưu tiên so 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)
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 thay vì chỉ đơn giản là thay thế nó. Điều tương tự đang được thực hiện bằng cách gọi phương thức trong lớp cơ sở từ lớp trong lớp có nguồn gốc (gọ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)
7 từ
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 trong
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])
9).

Một tùy chọn tốt hơn sẽ là sử dụng chức năng tích hợp

>>> 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
0. Vì vậ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
1 tương đương với
>>> 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
2 và được ưa thích. Để tìm hiểu thêm về hàm
>>> 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
0 trong Python, hãy truy cập hàm python Super ().

Hai chức năng tích hợp

>>> 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
4 và
>>> 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
5 được sử dụng để kiểm tra các khoản thừa kế.

Hàm

>>> 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
4 trả về
>>> 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
7 nếu đối tượng là một thể hiện của lớp hoặc các lớp khác có nguồn gốc từ nó. Mỗi và mọi lớp trong Python thừa hưởng từ lớp cơ sở
>>> 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
8.

>>> isinstance(t,Triangle)
True

>>> isinstance(t,Polygon)
True

>>> isinstance(t,int)
False

>>> isinstance(t,object)
True

Tương tự,

>>> 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
5 được sử dụng để kiểm tra kế thừa lớp.

>>> issubclass(Polygon,Triangle)
False

>>> issubclass(Triangle,Polygon)
True

>>> issubclass(bool,int)
True

Ngôn ngữ lập trình Python rất dễ học và làm việc theo cả phương pháp lập trình theo quy trình và đối tượng. Kế thừa là một khái niệm như vậy trong lập trình hướng đối tượng. Khả năng tái sử dụng mã là sở trường thừa kế, nó giúp rất nhiều ứng dụng khi chúng tôi đang làm việc trên Python. Sau đây là các khái niệm được thảo luận trong bài viết này:

  • Thừa kế là gì?
  • hàm init
  • Các loại kế thừa
    • Thừa kế duy nhất
    • Nhiều kế thừa
    • Thừa kế đa cấp
    • Di truyền phân cấp
    • Di truyền lai
  • Di truyền lai liên quan đến nhiều kế thừa diễn ra trong một chương trình duy nhất.
  • Phương pháp Python ghi đè

Thừa kế là gì?

hàm init

  1. Hàm python siêu ()

  2. Phương pháp kế thừa các thuộc tính của lớp cha thành một lớp con được gọi là kế thừa. Đó là một khái niệm OOP. Sau đây là những lợi ích của thừa kế.

  3. Khả năng tái sử dụng mã- Chúng tôi không phải viết cùng một mã nhiều lần, chúng tôi chỉ có thể kế thừa các thuộc tính chúng tôi cần trong một lớp con.

Nó đại diện cho một mối quan hệ thế giới thực giữa lớp cha mẹ và lớp con.

class Parent():
       def first(self):
           print('first function')

class Child(Parent):
       def second(self):
          print('second function')

ob = Child()
ob.first()
ob.second()

Output: 
first function
second function

Nó là bắc cầu trong tự nhiên. Nếu một lớp con thừa hưởng các thuộc tính từ lớp cha, thì tất cả các lớp con khác của lớp con cũng sẽ kế thừa các thuộc tính của lớp cha.

Dưới đây là một ví dụ đơn giản về sự kế thừa trong Python.

Trong chương trình trên, bạn có thể truy cập chức năng lớp cha bằng đối tượng lớp con.

Lớp phụ & nbsp;

Gọi một nhà xây dựng của lớp cha bằng cách đề cập đến tên lớp cha trong Tuyên bố lớp con được gọi là lớp phụ. Một lớp con xác định lớp cha của nó bằng lớp phụ.

class Parent:
     def __init__(self , fname, fage):
          self.firstname = fname
          self.age = fage
     def view(self):
         print(self.firstname , self.age)
class Child(Parent):
     def __init__(self , fname , fage):
          Parent.__init__(self, fname, fage)
          self.lastname = "edureka"
     def view(self):
          print("course name" , self.firstname ,"first came",  self.age , " years ago." , self.lastname, " has courses to master python")
ob = Child("Python" , '28')
ob.view()
 

Các loại kế thừa

Tùy thuộc vào số lượng các lớp con và phụ huynh có liên quan, có bốn loại thừa kế trong Python.

Hướng dẫn what is inheritance with real time example in python? - kế thừa với ví dụ thời gian thực trong python là gì?

Thừa kế duy nhất

Khi một lớp con chỉ thừa hưởng một lớp cha mẹ đơn lẻ.

class Parent:
     def func1(self):
          print("this is function one")
class Child(Parent):
     def func2(self):
          print(" this is function 2 ")
ob = Child()
ob.func1()
ob.func2()

Nhiều kế thừa

Khi một lớp con được thừa hưởng từ nhiều lớp cha mẹ.

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

Thừa kế đa cấp

Khi một lớp con trở thành lớp cha mẹ cho một lớp con khá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])
1

Di truyền phân cấp

Di truyền phân cấp liên quan đến nhiều kế thừa từ cùng một lớp cơ sở hoặc lớp cha.

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])
2

Di truyền lai

Di truyền lai liên quan đến nhiều kế thừa diễn ra trong một chương trình duy nhấ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])
3

Hàm python siêu ()

Super Function cho phép chúng tôi gọi một phương thức từ lớp cha.

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

Phương pháp Python ghi đè

Phương thức ghi đè

Bạn có thể ghi đè một phương thức trong Python. Nhìn vào ví dụ dưới đây.

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])
5

Chức năng của phương thức lớp cha là thay đổi bằng cách ghi đè cùng một phương thức trong lớp con.

Di truyền là một trong những khái niệm quan trọng nhất của OOP. Nó cung cấp khả năng tái sử dụng mã, khả năng đọc và chuyển đổi các thuộc tính giúp xây dựng mã tối ưu hóa và hiệu quả. Ngôn ngữ lập trình Python được tải với các khái niệm như kế thừa. Các ứng dụng Python khổng lồ kêu gọi tăng số lượng lập trình viên Python trong thị trường gần đây. Để thành thạo các kỹ năng của bạn và khởi động chương trình chứng nhận học tập học tập của bạn vào Edureka, Python và trở thành nhà phát triển Python ngay lập tức.

Có bất kỳ câu hỏi? Đề cập đến chúng trong phần bình luận. Nhóm của chúng tôi sẽ liên hệ lại với bạn càng sớm càng tốt.

Sự thừa kế trong Python với ví dụ thời gian thực là gì?

Kế thừa trong kế thừa Python là một tính năng mạnh mẽ trong lập trình hướng đối tượng. Nó đề cập đến việc xác định một lớp mới có ít hoặc không có sửa đổi cho một lớp hiện có. Lớp mới được gọi là lớp dẫn xuất (hoặc trẻ em) và lớp mà nó thừa hưởng được gọi là lớp cơ sở (hoặc cha mẹ).defining a new class with little or no modification to an existing class. The new class is called derived (or child) class and the one from which it inherits is called the base (or parent) class.

Kế thừa với ví dụ thời gian thực là gì?

Kế thừa là khả năng của một lớp để kế thừa các khả năng hoặc thuộc tính từ một lớp khác trong Java.Chẳng hạn, chúng ta là con người.Chúng tôi thừa hưởng các thuộc tính nhất định từ lớp 'con người' như khả năng nói, thở, ăn, uống, v.v. Chúng tôi cũng có thể lấy ví dụ về xe hơi.the capability of one class to inherit capabilities or properties from another class in Java. For instance, we are humans. We inherit certain properties from the class 'Human' such as the ability to speak, breathe, eat, drink, etc. We can also take the example of cars.

Đối tượng trong Python với ví dụ thời gian thực là gì?

Một đối tượng chỉ đơn giản là một tập hợp dữ liệu (biến) và phương thức (hàm) hoạt động trên các dữ liệu đó.Tương tự, một lớp là một bản thiết kế cho đối tượng đó.Chúng ta có thể nghĩ về một lớp học như một bản phác thảo (nguyên mẫu) của một ngôi nhà.Nó chứa tất cả các chi tiết về sàn, cửa, cửa sổ, v.v.a collection of data (variables) and methods (functions) that act on those data. Similarly, a class is a blueprint for that object. We can think of a class as a sketch (prototype) of a house. It contains all the details about the floors, doors, windows, etc.

Kế thừa lớp giải thích với các ví dụ các loại khác nhau trong Python là gì?

Kế thừa là một quá trình thu được các thuộc tính và đặc điểm (biến và phương pháp) của một lớp khác.Theo thứ tự phân cấp này, lớp kế thừa một lớp khác được gọi là lớp con hoặc lớp con và lớp khác là lớp cha.a process of obtaining properties and characteristics(variables and methods) of another class. In this hierarchical order, the class which inherits another class is called subclass or child class, and the other class is the parent class.