きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

引数にdict,tuple,list,java.util.Propertiesを受け付ける関数の検討

タイプの判定をやってみた。
引数は最終的にdictionaryに詰め込む。

import typesして
if types.DictType==type(arg):
 self.mydictionary.update(arg)
#endif
みたいなことをしてみた。
tupleとlistも似た判定に加えて、要素が2であるチェックをして、key:valueで詰め込む。


割と悩んだのが、java.util.Propertiesの判定だった。
まずfrom java.util import Propertiesしとく。
if isinstance(arg,Properties):
こんな感じでいけるようだった。
まあ、たぶん使わないんだが、興味本位で考えてしまった。


props=Properties()
print type(props)
これで検査すると、org.python.core.PyJavaInstanceが出てきてしまい、typesモジュールで判定は難しいように思えた。
PyJavaInstanceだったか、他の何かにはclass属性があるので、それを判定に使おうかとも考えたけれど、違和感があるので踏みとどまった。


関数の引数を工夫するのも考えたんだけど、
あれは少し慣れが必要だし、今回はPropertiesも受け付けるのも考えてたんで遠慮した。
普通にやるなら辞書のみでやればいい。