Tôi có một lớp trừu tượng, Model
, với một vài phương pháp trừu tượng, tôi nên đặt gì vào phần thân của các phương thức?Nội dung phương pháp trừu tượng trong Python 3.5
Tờ
class Model(metaclass=ABCMeta): @abstractmethod def foo(self): return
Một đường chuyền
class Model(metaclass=ABCMeta): @abstractmethod def foo(self): pass
Nâng cao một lỗi mô tả
class Model(metaclass=ABCMeta): @abstractmethod def foo(self): raise NotImplementedError("Class {class_name} doesn't implement {func_name} function" .format(class_name=self.__class__.__name__, func_name=self.__init__.__name__))
Thông thường tôi sẽ thực hiện phương pháp 3 và nâng cao một lỗi, tuy nhiên có vẻ như nó sẽ là không cần thiết, như Python đặt ra một lỗi cho tôi:
>>> bar = module.Model()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class Model with abstract methods foo
giữa các tùy chọn trình bày, đó là thực hành tốt nhất? Hoặc là có một cách khác tôi nên xử lý này?
Đừng quên rằng việc gọi mã là có thể, tức là 'super(). Foo()' được hỗ trợ. – dhke
Bản sao của [Tôi nên đặt gì vào phần thân của một phương thức trừu tượng trong Python] (https://stackoverflow.com/q/40894284/2301450). – vaultah