Là Uriel says, nó có nghĩa là cho một phương thức trong lớp trừu tượng cần được triển khai trong lớp con, nhưng cũng có thể được sử dụng để biểu thị TODO.
Python 3 đi kèm với giải pháp thay thế cho trường hợp sử dụng đầu tiên: Abstract Base Classes. Những sự giúp đỡ tạo lớp trừu tượng:
class C(abc.ABC):
@abstractmethod
def my_abstract_method(self, ...):
...
Khi instantiating C
, bạn sẽ nhận được một lỗi vì my_abstract_method
là trừu tượng. Bạn cần phải thực hiện nó trong một lớp con.
TypeError: Can't instantiate abstract class C with abstract methods my_abstract_method
Phân lớp C
và triển khai my_abstract_method
.
class D(C):
def my_abstract_method(self, ...):
...
Bây giờ bạn có thể nhanh chóng D
.
C.my_abstract_method
không cần để trống. Nó có thể được gọi từ D
sử dụng super()
.
Lợi thế của điều này hơn NotImplementedError
là bạn nhận được rõ ràng Exception
vào thời điểm khởi tạo, không phải lúc gọi phương thức.
Nguồn
2017-06-01 20:24:37
Quảng cáo chéo trang web: https://softwareengineering.stackexchange.com/q/231397/110531 – jonrsharpe
Tôi sẽ nói: Khi nó đáp ứng ["Nguyên tắc ít ngạc nhiên nhất"] (https://en.wikipedia.org/wiki/Principle_of_least_astonishment). – MSeifert