2015年12月9日 星期三

[python] python 中的 @classmethod vs @staticmethod decorator


python 中有兩個在class中的 decorator , classmethod 與 staticmethod。
使用這兩個decorator在 method上,就可以不用特別去實體化class,就可以調用這些方法。


那這兩個 classmethod vs staticmethod 有什麼主要的區別呢?
  • @classmethod
    • 不需要帶self 參數,但是第一個參數需要是 自己類別的 cls 參數。
  • @staticmethod
    • 不需要self 參數與自身類別的cls 參數,就像使用函數一樣。

詳細的例子可以對照 給出的例子
装饰器@staticmethod和@classmethod有什么区别? | Stackoverflow about Python 





ref.
Descriptor HowTo Guide — Python 2.7.11 documentation 
飘逸的python - @staticmethod和@classmethod的作用与区别 - mattkang - 博客频道 - CSDN.NET
Python 中的 classmethod 和 staticmethod 有什么具体用途? - Python - 知乎
[翻译]Python中staticmethod和classmethod的差异
装饰器@staticmethod和@classmethod有什么区别? | Stackoverflow about Python

沒有留言:

張貼留言