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

2024-03-29 10:41:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想看看PyQt5.qtwidkets的源代码,但最后看到了以下代码:

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

只有一些注释和方法只有“pass”和“return”,有人能解释一下它们是如何工作的吗?其他代码在哪里?你知道吗


Tags: 代码selfnonedefargspassrealunknown
1条回答
网友
1楼 · 发布于 2024-03-29 10:41:36

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

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

EDIT:如果它是一个抽象基类,那么这将是正确的,但是它只是PyCharm自动生成的一个嘈杂的类存根。你知道吗

相关问题 更多 >