这不是关于@staticmethod
和@classmethod
!我知道如何staticmethod
工作。我想知道的是@staticmethod
模块级功能的正确用例。
我已经用谷歌搜索了这个问题,似乎已经达成了一些普遍的共识,即模块级函数比静态方法更受青睐,因为它更具Python风格。静态方法具有绑定到其类的优势,如果仅该类使用它,这可能是有道理的。但是,在Python中,功能通常是按模块而非类来组织的,因此通常使它成为模块功能也是有意义的。
静态方法也可以被子类覆盖,这是一个优点或缺点,这取决于您如何看待它。尽管静态方法通常是“功能纯净的”,所以重写它可能并不明智,但有时可能很方便(尽管这可能是“便捷但绝不做”的事情之一,只有经验才能教您。)
是否有使用静态方法或模块级功能的一般经验法则?它们有哪些具体的优点或缺点(例如,将来的扩展,外部扩展,可读性)?如果可能,还提供一个案例。