为了账号安全,请及时绑定邮箱和手机立即绑定

Python3:为什么在某些模块的方法中除了一些注释、“通过”和“返回”之外没有实际代码?

Python3:为什么在某些模块的方法中除了一些注释、“通过”和“返回”之外没有实际代码?

侃侃无极 2021-07-29 18:49:48
我想看看 PyQt5.QtWidgets 的源代码,但最终看到了下面的代码:class QPushButton(QAbstractButton):    """    QPushButton(parent: QWidget = None)    QPushButton(str, parent: QWidget = None)    QPushButton(QIcon, str, parent: QWidget = None)    """    def actionEvent(self, *args, **kwargs): # real signature unknown        pass    def autoDefault(self): # real signature unknown; restored from __doc__        """ autoDefault(self) -> bool """        return False    def changeEvent(self, *args, **kwargs): # real signature unknown        pass只有一些注释和方法只有“通过”和“返回”,有人能解释一下它们是如何工作的吗?其他代码在哪里?
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

简单地说,像这样的抽象类被另一个类扩展,然后另一个类将实现这些空方法。这就像软件中的一个界面。Python 遵循Duck-typing 的原则,这意味着某些对象应该实现具有特定名称、参数和返回类型(方法签名)以及特定属性的方法。所以,这个抽象类有助于维护这些原则。

模块可能希望您扩展此类,填充方法,然后模块中的另一个对象或函数稍后使用可以调用自定义按钮对象上的这三个特定方法中的一个或多个。这是鸭子打字。

编辑:如果它是一个抽象基类,这将是正确的,但它只是一个由 PyCharm 自动生成的嘈杂的类存根。


查看完整回答
反对 回复 2021-08-03
  • 1 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号