我读过了
-
@staticmethod 和 @classmethod 有什么区别
Python? https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python
- Python @classmethod 和 @staticmethod 适合初学者吗? https://stackoverflow.com/questions/12179271/python-classmethod-and-staticmethod-for-beginner
As staticmethod
无法访问该类的实例,我不知道它和global function
?
以及什么时候应该使用staticmethod
?能举个很好的例子吗?
与全局函数一样,静态方法无法访问包含类的实例。但它在概念上属于包含类。另一个好处是可以避免名称冲突。
当函数设计用于某个给定类时,建议将其作为该类的静态方法。这就是所谓的cohesion http://en.wikipedia.org/wiki/Cohesion_%28computer_science%29。另外,如果这个函数不被外部使用,可以在它前面加下划线,标记为“私有”,这样就调用了信息隐藏 http://en.wikipedia.org/wiki/Information_hiding(尽管Python并不真正支持私有方法)。根据经验,暴露尽可能少的接口将使代码更加干净并且不易更改。
即使该函数应该作为跨多个模块的许多类的共享实用程序,使其成为全局函数仍然不是首选。考虑将其作为某些实用程序类的静态方法,或者将其作为某些专用模块中的全局函数。这样做的一个原因是将类似用途的函数收集到一个公共类或模块中,有利于另一个级别的抽象/模块化(对于小型项目,有些人可能会认为这是过度设计)。另一个原因是这可以减少名称空间污染。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)