Hướng dẫn how does a class inherit in python? - làm thế nào để một lớp kế thừa trong python?
Thừa kế trong PythonKế thừa là một tính năng mạnh mẽ trong lập trình hướng đối tượng. Show
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 Pythonclass 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à 5 được định nghĩa như sau.
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 6 có độ lớn của mỗi bên và 7 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.
Tuy nhiên, lớp 8 có phương pháp mới 9 để tìm và in diện tích của tam giác. Đây là một mẫu chạy.
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ư 6 hoặc 7 cho lớp 8 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 PythonTrong ví dụ trên, lưu ý rằng phương pháp 3 đượ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à, 3 trong tam giác được ưu tiên so với 5 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 6 từ 3 trong 8).Một tùy chọn tốt hơn sẽ là sử dụng chức năng tích hợp 9. Vì vậy, 0 tương đương với 1 và được ưa thích. Để tìm hiểu thêm về hàm 9 trong Python, hãy truy cập hàm python Super ().Hai chức năng tích hợp 3 và 4 được sử dụng để kiểm tra các khoản thừa kế.Hàm 3 trả về 6 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ở 7.
Tương tự, 4 được sử dụng để kiểm tra kế thừa lớp. Một trong những khái niệm cốt lõi trong các ngôn ngữ lập trình hướng đối tượng (OOP) là sự kế thừa. Đây là một cơ chế cho phép bạn tạo một hệ thống phân cấp các lớp chia sẻ một tập hợp các thuộc tính và phương thức bằng cách lấy một lớp từ một lớp khác. Kế thừa là khả năng của một lớp để lấy hoặc kế thừa các thuộc tính từ một lớp khác. & NBSP; Lợi ích của việc thừa kế là: & nbsp;
Cú pháp kế thừa PythonClass BaseClass: {Body} Class DerivedClass(BaseClass): {Body} Tạo lớp cha mẹTạo một lớp người với các phương thức hiển thị.Person class with Display methods. Python3 9 0 7 2 3 4 5 6 7 8 2 0 6 223 4 0 6 7 8 3 8 3 4 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}3 6 2Các Satyam 1025 3 0Satyam 1028 Satyam 1029 Mayank 103 Emp class called0 Mayank 103 Emp class called1 Mayank 103 Emp class called2 Output: Satyam 102 Tạo một lớp trẻ emỞ đây EMP là một lớp khác sẽ kế thừa các thuộc tính của lớp PERSE (lớp cơ sở).Emp is another class which is going to inherit the properties of the Person class(base class). Python3 9 Mayank 103 Emp class called4 3 4 Mayank 103 Emp class called7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 6 2 0Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 Geek1 False Geek2 True4 Satyam 1024 ‘ 03 04Mayank 103 Emp class called7 06Output: Mayank 103 Emp class called Ví dụ về kế thừa trong Python & NBSP;Python3 9 0 7 2 3 4 5 6 7 8 2 0 6 223 4 0 6 7 8 3 8 3 4 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}3 6 2Các Satyam 1025 3 0Satyam 1028 Satyam 1029 Mayank 103 Emp class called0 Mayank 103 Emp class called1 Tạo một lớp trẻ em Các Satyam 1025 3 0Satyam 1028 Satyam 1029 Mayank 103 Emp class called0 Mayank 103 Emp class called1 Tạo một lớp trẻ em Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 54Ở đây EMP là một lớp khác sẽ kế thừa các thuộc tính của lớp PERSE (lớp cơ sở). Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 54Output: Geek1 False Geek2 True >>> 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.009 Mayank 103 Emp class called4 3 4 Mayank 103 Emp class called7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 6 2
>>> issubclass(Polygon,Triangle) False >>> issubclass(Triangle,Polygon) True >>> issubclass(bool,int) True0>>> isinstance(t,Triangle) True >>> isinstance(t,Polygon) True >>> isinstance(t,int) False >>> isinstance(t,object) True4 >>> isinstance(t,Triangle) True >>> isinstance(t,Polygon) True >>> isinstance(t,int) False >>> isinstance(t,object) True5>>> isinstance(t,Triangle) True >>> isinstance(t,Polygon) True >>> isinstance(t,int) False >>> isinstance(t,object) True6class 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])15 16 6 22 4 0____44 23 6 2subclass_name (superclass_name): Python3 9 0 7 2 3 4 5 6 7 8 2 0 6 223 4 0 6 7 8 3 8 3 4 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}3 6 2 16Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 6 90 16Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 6 95Tạo một lớp trẻ em Ở đây EMP là một lớp khác sẽ kế thừa các thuộc tính của lớp PERSE (lớp cơ sở). 9 Mayank 103 Emp class called4 3 4 Mayank 103 Emp class called7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 6 2 16 14 6 16‘ 28Output: 0Ví dụ về kế thừa trong Python & NBSP; Chương trình Python để chứng minh lỗi nếu chúng ta quên gọi __init __ () của cha mẹNếu bạn quên gọi __init __ () của lớp cha thì các biến thể hiện của nó sẽ không có sẵn cho lớp con. & NBSP; Mã sau đây tạo ra một lỗi vì lý do tương tự. & NBSP; Python3 9 30 0 4 5 6 35 3 20 2 16 6 22 43 9 45 0 4 5 6 50 16 6 53 3 55 7 3 58 59Satyam 1024 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 7 90Đầu ra: & nbsp; 1Các loại kế thừa khác nhau:
Không giống như Java, Python cho thấy nhiều kế thừa. Python3 9 66 7 2 0 4 5 6 2 16 6 76 3 51 16Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 82Satyam 1024 9 85 7 2 0 4 5 6 2 16 6 76 3 51
16Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 01Satyam 1024 9 85 7 2 0 4 5 6 2 16 11 6Satyam 1024 16 15 6Satyam 1024 16Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 21Satyam 1024 16 6 76 3 51 16Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}8 6 32 6 34 9 85 7 2 38Output: 2
Python3 9 04 0 4 25 6 2 35 3 37Di sản đa cấp: Khi chúng ta có một mối quan hệ con và cháu. & Nbsp; 9 40 7 2 0 4 5 6 15 16 6 22 4 16 70 6 72 0____44 23 6 2 16 27 6 29 9 63 0____44 5 6 68 16 6 755____53 77 16 95 6 97 0____44 80 6 2 16 27 6 86 9 88 0____44 5 6 93Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 22Output: 3
>>> isinstance(t,Triangle) True >>> isinstance(t,Polygon) True >>> isinstance(t,int) False >>> isinstance(t,object) True12>>> issubclass(Polygon,Triangle) False >>> issubclass(Triangle,Polygon) True >>> issubclass(bool,int) True3 >>> isinstance(t,Triangle) True >>> isinstance(t,Polygon) True >>> isinstance(t,int) False >>> isinstance(t,object) True14class 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])51Satyam 1029class 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)59Satyam 1029>>> isinstance(t,Triangle) True >>> isinstance(t,Polygon) True >>> isinstance(t,int) False >>> isinstance(t,object) True19Satyam 1024Di truyền phân cấp Nhiều hơn một lớp dẫn xuất được tạo ra từ một cơ sở duy nhất. Python3Di truyền lai: Hình thức này kết hợp nhiều hơn một hình thức thừa kế. Về cơ bản, nó là một sự pha trộn của nhiều hơn một loại thừa kế. 0 4 5 6 2 16 6 76 3 51 9 85 7 2 16 6 95 3 58 0 4 5 6 2 16 6 76 3 51 16 55 6Satyam 1024 9 85 7 2Class BaseClass: {Body} Class DerivedClass(BaseClass): {Body}7 62Đầu ra: & nbsp; 4Các loại kế thừa khác nhau: Làm thế nào để một lớp kế thừa từ một lớp python khác?Tạo một lớp kế thừa từ một lớp khác để tạo một lớp kế thừa từ một lớp khác, sau tên lớp, bạn sẽ đặt dấu ngoặc đơn và sau đó liệt kê bất kỳ lớp nào mà lớp của bạn kế thừa. Trong một định nghĩa chức năng, dấu ngoặc đơn sau tên hàm biểu thị các đối số mà hàm chấp nhận.after the class name you'll put parentheses and then list any classes that your class inherits from. In a function definition, parentheses after the function name represent arguments that the function accepts.
Làm thế nào để thừa kế hoạt động trong Python?Kế thừa là khi một lớp được tạo dựa trên một lớp hiện có và lớp mới kế thừa các thuộc tính và phương thức từ lớp hiện có.Lớp mới thường được gọi là lớp trẻ con, và lớp hiện tại được gọi là lớp cha mẹ.when a class is created based on an existing class, and the new class inherits the attributes and methods from the existing class. The new class is usually called “child class”, and the existing class is called “parent class”.
Python có kế thừa lớp học không?Python là một trong số ít các ngôn ngữ lập trình hiện đại hỗ trợ nhiều kế thừa.Nhiều kế thừa là khả năng lấy một lớp từ nhiều lớp cơ sở cùng một lúc.. Multiple inheritance is the ability to derive a class from multiple base classes at the same time.
Ví dụ về kế thừa lớp là gì?Đây là một ví dụ - xe hơi, xe buýt, xe đạp - tất cả những thứ này thuộc một thể loại rộng hơn gọi là xe.Điều đó có nghĩa là họ đã thừa hưởng các thuộc tính của phương tiện lớp học, tất cả đều được sử dụng để vận chuyển.Chúng ta có thể đại diện cho mối quan hệ này trong mã với sự trợ giúp của thừa kế.car, bus, bike – all of these come under a broader category called Vehicle. That means they've inherited the properties of class vehicles i.e all are used for transportation. We can represent this relationship in code with the help of inheritance. |