2016/10/24

[py]classにしなくてもモジュールとして使える

JavaやC#は、classを作る。
classを作って、その中にメソッドやら何やらを詰め込む。

pythonもそういう言語なのだろうと思って、同じファイル内では関数(クラス内ではないメソッドという意味ね)が書けるけれども、importする場合はクラス名がいるんだろう、と思い込んでいた。

だから、自分用のユーティリティ関数を作っていたのだが、それはclassにして、@staticmethodを全部に付けていた。
そうすると、同じファイル内でメソッドを呼び出したくてもクラス名を書かなくてはならないので、面倒だなぁ、しょうが無いなぁ、と思いながらやっていた。

 

が、そういうことはしなくてよいのだ。
ファイル名がモジュール相当で、それをimportしたら「ファイル名.関数名()」という形で使うことができるんだな。。。
おじさん、気付かなかったよ。

いやあ、使うときに「from ファイル名 import クラス名」みたいにしていたけど、他のモジュールってそういう使い方してないよなぁ、とは思っていたのだ。
「クラス名は大文字から始めるのが基本ルールです」と書いてあるのに、小文字で始まっているものが多いから「まったくルールを守らずに・・・」とか思っていたけど、あれはモジュール名だったのね。

気付けばわかるんだけど、一人でやっているとなかなか気付かないものだ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。