http://d.hatena.ne.jp/pashango_p/20090702/1246550203
len()ããªã¹ãã®ã¡ã½ããã§ãªãã®ãåãçç±ã§ãã
ãªãã¸ã§ã¯ãæåçã«èããã°ããªã¹ãã®ã¡ã½ããã§ããã¹ããªã®ã«ããããããã«ãã¤ã³é¢æ°ã«ãããã§ãã
ããªãã¸ã§ã¯ãæåçã«èããã°ããªã¹ãã®ã¡ã½ããã§ããã¹ããã£ã¦æãã§ããªãã¸ã§ã¯ãä¿¡è
ã¯ãããæ£ç¾©ã¿ããã«èãã¡ãããã ããã・・・
Pythonã¯åç主義ãããªãã¸ã§ã¯ãæåçã«ââãããããä¸è²«ããå°ãªãã¦æç¢ºãªã«ã¼ã«ãéè¦ããã
len() ã .length() ã¡ã½ããã ã£ããã©ããªãããããã³ã³ãã㯠.length() ã®ä»£ããã«ã .len() ã .size() ã¨ããååã使ã£ã¦ãã¾ããããããªããããµã¤ãºãåãã¡ã½ããã¯.length()ãã¨ãã æé»ã®ã«ã¼ã«ãã§ãã¦ãã¾ãããã®ã«ã¼ã«ãé ã«å ¥ã£ã¦ããªã人ãä¸è²«æ§ã®ç¡ãã³ã¼ããæ¸ãã¦ãã¾ãã
ãã®åé¡ã解決ããã«ã¯ãJavaã§è¨ãinterfaceãç¨æãã¦ã³ã³ããåã¯å¿ ããããå®è£ ããªãã¨ãããªããã¨ããæãããããduck typingã®åççä»ã¨ã¯å ±åãã«ããã
ããã§ãPythonã¯ãä½ãã®ã«ã¼ã«ã«æºæ ããããã®ã¡ã½ãã(以éãç¹æ®ã¡ã½ãã)ã¯ã__???__ãã¨ããå½¢ã«ãããã¨ããä¸è¬ã«ã¼ã«ãã¤ãããããã interface ã®ä»£ããã«ããããããªããæé»ã®ã«ã¼ã«ã«ç²¾éãã¦ããªã人ãã__???__ãã¨ããã¡ã½ããåãé¿ããã°æ°ã¥ããªããã¡ã«ã«ã¼ã«ãç ´ã£ã¦ãã¾ããã¨ãç¡ããªããäºç´èªä»¥å¤ã®ãæé»ã®ã«ã¼ã«ã§ä½¿ããªãã»ããè¯ãèªããæ°ã«ããªãã¦ãããªãã
ãã¦ãç¹æ®ã¡ã½ããã¯ãç´æ¥å¼ã¶ãã¨ãåºæ¥ããåºæ¬çã«ã¯ä½ãã®ã¤ã³ã¿ãã§ã¼ã¹ãéãã¦å¼ã¶äºã«ãªãã__eq__ ã¨ããã¡ã½ãã㯠== ã¨ããæ¼ç®åã«ãã£ã¦å¼ã°ãããã__str__ ã¯stråã®ã³ã³ã¹ãã©ã¯ã¿ã"%s"ã«å¯¾ãããã©ã¼ãããçæååã¸ã®å¤æã§å¼ã°ããããã㦠__len__ ã«å¯¾ããã¤ã³ã¿ãã§ã¼ã¹ã¯ len() ã¨ããçµã¿è¾¼ã¿é¢æ°ã«ãªã£ã¦ãããä»ã«ã __iter__ ã iter() ã¨ããçµã¿è¾¼ã¿é¢æ°ãã¤ã³ã¿ãã§ã¼ã¹ã«ãªã£ã¦ãã*1ã
æ®å¿µãªãããæ´å²ççµç·¯ã«ãããã®ä¸è²«æ§ã«åã£ã¦ããªãé¨åãããããã¨ãã°ã¤ãã¬ã¼ã¿ãå®è£ ããã¡ã½ãã㯠.next() ã ããã㯠Python 3.0 ã§ã¯ä¿®æ£ããã __next__() ã«ãªããä¸è²«æ§ãä¿ã¤ããã«ã10å¹´ã«ä¸åããããããã£ãä¸ä½äºææ§ãç¶æã§ããªã大æé¤ãå¿ è¦ã«ãªãã