作者: 機械伯爵
日時: 2002/11/23(11:18)
 機械です。

>> ※文字列型をダイレクトに取得しようとすると、
>>  モジュールインポートが必要なので・・・
>
>これ、どういう意味でしょうか?
>
>「文字列型を ... モジュールインポートが必要なので」
>の意味が良く分かりませんでした。

 Pythonの基本モジュールの中に'types'というのがあります。

 このモジュールをインポートして、

if types.StringType == type(lst):

 あるいは

if  type(lst) in types.StringTypes: #unicode文字列の場合も使える

 とすると、オブジェクトタイプのテストが出来ます。

 しかし、標準関数typeで文字列のオブジェクトタイプ識別オブジェクト(ややこし
いな)
を呼び出したほうが手軽だ、という感じで使いました。

>こういうところの統一性と思想が、理解できていない…。
>(もしかして慣れ?)

 Pythonが、オブジェクト指向思想を「オプションとして」取り入れているところ
に、
問題があるんでしょうね。

 本来、オブジェクトの属性を呼び出すなら、メソッドとして実装するほうを優先
すべきでしょうが、関数タイプの方がなじみやすいと考えたのでしょう。

※メソッドとして呼び出せないわけではないのですが、ややしこりは残ります。

>特に以前は lst="1,2,3,4,5".split(",") という記法が
>できなかったのに、今はできるようになったというのが
>私の中では混乱のもと。

 Pythonは1.6以降、それまで極力手をつけなかった文法の改善(?)に取り組みはじめ
ました。

 賛否両論はあるでしょうが、テキストがほとんど1.5.2対象なので、拡張文法を使
用
すると、「コードが読みやすい」というPythonの、いわば最大のセールスポイントが
あやうくなりかねません。

※度重なる文法拡張と不統一で「難しい」という印象が払拭できないC言語やC++言語
の
 二の舞にならねば良いのですが・・・

 モジュール拡張はともかく、基本組み込みオブジェクトのメソッドや、文法拡張に
ついてはとっとと落ち着かせてほしいところです(文法は、そこそこおちついてるみ
たいですが・・・)