Hướng dẫn can abstract method have body in python - phương thức trừu tượng có thể có phần thân trong python
Tôi có một lớp trừu tượng, 6, với một vài phương pháp trừu tượng, tôi nên đặt gì vào cơ thể của các phương pháp? Show
Thông thường tôi sẽ thực hiện Phương pháp 3 và gây ra lỗi, tuy nhiên có vẻ như nó sẽ dư thừa, vì Python gây ra lỗi cho tôi:
Giữa các tùy chọn được trình bày, cách thực hành tốt nhất? Hay là có cách khác tôi nên xử lý việc này? Chúng ta có thể ghi đè phương thức trừu tượng trong Python không? Một lớp có metaclass có nguồn gốc từ ABCMeta không thể được khởi tạo trừ khi tất cả các phương thức và thuộc tính trừu tượng của nó được ghi đè. Các phương thức trừu tượng có thể được gọi bằng cách sử dụng bất kỳ cơ chế cuộc gọi 'siêu' nào bình thường. Tóm tắtMethod () có thể được sử dụng để khai báo các phương thức trừu tượng cho các thuộc tính và mô tả.
Một lớp trừu tượng là một lớp chứa một hoặc nhiều phương thức trừu tượng. Một phương pháp trừu tượng là một phương pháp thường không có bất kỳ triển khai nào, nó được để lại cho các lớp phụ để cung cấp triển khai cho các phương thức trừu tượng. Ở đây lưu ý rằng trong Python, phương pháp trừu tượng cũng có thể thực hiện trong lớp trừu tượng nhưng lớp phụ thừa hưởng lớp trừu tượng đó vẫn bị buộc phải ghi đè các phương thức trừu tượng.Mục lục Lớp học trừu tượng trong Python from abc import ABC Class MyClass(ABC): Phương pháp trừu tượng trong Python Mục lụcLớp học trừu tượng trong Python Phương pháp trừu tượng trong Python from abc import ABC, abstractmethod Class MyClass(ABC): @abstractmethod def mymethod(self): #empty body pass Lớp học trừu tượng trong Python
Phương pháp trừu tượng trong PythonNhững điểm quan trọng về lớp trừu tượng trong Pythoncommon and an abstract method vary. Two sub classes Child1 and Child2 inherit the abstract class Parent and implement the abstract method vary. from abc import ABC, abstractmethod class Parent(ABC): #common functionality def common(self): print('In common method of Parent') @abstractmethod def vary(self): pass class Child1(Parent): def vary(self): print('In vary method of Child1') class Child2(Parent): def vary(self): print('In vary method of Child2') # object of Child1 class obj = Child1() obj.common() obj.vary() # object of Child2 class obj = Child2() obj.common() obj.vary() Đầu ra In common method of Parent In vary method of Child1 In common method of Parent In vary method of Child2 Như bạn có thể thấy khi phương thức phổ biến được gọi là phương thức phổ biến () của cha mẹ được gọi. Khi phương thức khác nhau được gọi, phương thức được xác định trong lớp con được gọi. Lớp trừu tượng Python với phương pháp trừu tượng được triển khaiNgay cả khi bạn cung cấp việc thực hiện phương pháp trừu tượng trong lớp phụ Lớp trừu tượng vẫn bị buộc phải thực hiện phương pháp trừu tượng. from abc import ABC, abstractmethod class Parent(ABC): #common functionality def common(self): print('In common method of Parent') @abstractmethod def vary(self): print('In vary method of Parent') class Child(Parent): pass # object of Child1 class obj = Child() obj.common() obj.vary() Đầu ra Traceback (most recent call last): File "F:/NETJS/NetJS_2017/Python/Test/Parent.py", line 18, in Nếu bạn thực hiện phương thức Vary () trong lớp con thì nó hoạt động tốt. 0Đầu ra 1Không thực hiện tất cả các phương pháp trừu tượngNếu lớp con không thực hiện tất cả các phương thức trừu tượng được xác định trong lớp trừu tượng được kế thừa cũng dẫn đến lỗi. 2Đầu ra 3Lớp học trừu tượng khởi tạo ở PyhtonVì lớp trừu tượng được cho là có các phương pháp trừu tượng không có cơ thể nên các lớp trừu tượng không được coi là các lớp cụ thể hoàn chỉnh, do đó không thể khởi tạo một lớp trừu tượng. 4Đầu ra 5Đó là tất cả cho chủ đề này lớp trừu tượng trong Python. Nếu bạn có bất kỳ nghi ngờ hoặc bất kỳ đề xuất nào để đưa ra xin vui lòng bỏ bình luận. Cảm ơn!Abstract Class in Python. If you have any doubt or any suggestions to make please drop a comment. Thanks! Chủ đề liên quan
Bạn cũng có thể thích-
Phương pháp trừu tượng có cơ thể trong Python không?Một phương pháp trừu tượng không có cơ thể. (Nó không có tuyên bố.). (It has no statements.)
Lớp trừu tượng có thể có init trong Python không?Các lớp trừu tượng không thể được khởi tạo và yêu cầu các lớp con để cung cấp triển khai cho các phương thức trừu tượng.Nếu chúng ta bắt đầu chương trình này, chúng ta thấy rằng đây không phải là một lớp trừu tượng, bởi vì: chúng ta có thể khởi tạo một thể hiện từ., and require subclasses to provide implementations for the abstract methods. If we start this program, we see that this is not an abstract class, because: we can instantiate an instance from.
Lớp trừu tượng có thể có thuộc tính Python?Lớp trừu tượng trong Python cũng cung cấp chức năng của các thuộc tính trừu tượng ngoài các phương pháp trừu tượng.Thuộc tính là cách sử dụng pythonic để sử dụng getters và setters.Mô -đun ABC có bộ trang trí @abstractproperty để sử dụng các thuộc tính trừu tượng.. Properties are Pythonic ways of using getters and setters. The abc module has a @abstractproperty decorator to use abstract properties.
Chúng ta có thể ghi đè phương thức trừu tượng trong Python không?Một lớp có metaclass có nguồn gốc từ ABCMeta không thể được khởi tạo trừ khi tất cả các phương thức và thuộc tính trừu tượng của nó được ghi đè.Các phương thức trừu tượng có thể được gọi bằng cách sử dụng bất kỳ cơ chế cuộc gọi 'siêu' nào bình thường.Tóm tắtMethod () có thể được sử dụng để khai báo các phương thức trừu tượng cho các thuộc tính và mô tả.. The abstract methods can be called using any of the normal 'super' call mechanisms. abstractmethod() may be used to declare abstract methods for properties and descriptors. |