Say I have the following abstract class Foo
:
import abc
class Foo(abc.ABC):
@abc.abstractmethod
def bar(self):
raise NotImplementedError
What should I put in the body of the bar
method?
I see a lot of code that has raise NotImplementedError
, as shown above. However, this seems redundant, since any subclass that does not implement bar
will raise the TypeError: Can't instantiate abstract class Foo with abstract methods bar
when it is instantiated.
Is it Pythonic to leave bar
empty, as follows:
import abc
class Foo(abc.ABC):
@abc.abstractmethod
def bar(self):
...
This is what is done in the Python docs for Abstract Base Classes, but I'm not sure if that's just a placeholder or an actual example of how to write code.
If it's ok to leave bar
with only three dots (...
), when should I use NotImplementedError
?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…