機械です。
>> ※文字列型をダイレクトに取得しようとすると、
>> モジュールインポートが必要なので・・・
>
>これ、どういう意味でしょうか?
>
>「文字列型を ... モジュールインポートが必要なので」
>の意味が良く分かりませんでした。
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++言語
の
二の舞にならねば良いのですが・・・
モジュール拡張はともかく、基本組み込みオブジェクトのメソッドや、文法拡張に
ついてはとっとと落ち着かせてほしいところです(文法は、そこそこおちついてるみ
たいですが・・・)