Ray*_*Ray 4 python abstract pycharm
我有一个与PyCharm密切相关的特定问题(社区3.1.1).以下简单示例说明了这一点.我将使用PyCharm的屏幕截图而不是键入代码,原因很快就会清楚.

正如您所看到的,self.say_hello()PyCharm以黄色突出显示调用,可能这是因为say_hello()没有在Base类中实现.say_hello()在基类中没有实现的事实本身就是故意的,因为我想要一种"抽象"效果,这样一个实例Base就不能调用say_hello()(因此不应该调用hello()),而是一个Child可以调用的实例hello()(在Base课堂上实施).如果没有PyCharm抱怨,我如何获得这种"抽象"效果?
正如我从这里学到的,我可以使用该abc模块.但是,对我来说,这将是相当繁琐的,有点不是pythonic.你有什么建议?
小智 10
我将实现say_hello()为存根:
class Base(object):
# ...as above...
def say_hello(self):
raise NotImplementedError
Run Code Online (Sandbox Code Playgroud)
或者,只放入身体say_hello().
这也会向您的Base类用户发出信号,该用户say_hello()应在调用时获取AttributeError之前实现obj.hello().是否提出异常或pass取决于是否做任何事情都是合理的默认行为.如果您要求用户提供自己的方法,请引发异常.