module? class?

PythonでMaya用のスクリプトを書く時、ちょっとまともなツールっぽい感じだな、と思ったら
classを積極的に使うようにしていたんだけど、やってるうちに違和感。


というのも、Pythonは外部の.py、つまりモジュールを使う際にimportしないといけない。
なので、モジュールの中にクラスがあると、例えばこんな感じになってしまう。

import hoge
foo = hoge.hogeClass()
foo.testFunc()

んー、これだとわかりづらいかな、、

何と言いますか、今僕が作ってるスクリプトだと、
module自体がほとんど独立して動いているので、そもそもクラスが必要ないのでは、という感じなのです。

つーか、moduleとclassの違いがあまりないから、クラスを作る意味がほとんどない、と言いますか、
クラスはあってもいいんだけど、モジュールとの差別化がされていないというか、冗長になってしまっているだけ、というか、、、

なんとも、まだpython界でのルールというものが把握できていないので、
どうもまだ無駄が多いようなスクリプトになっています。

個人的に、プログラミング上のルールとかは、長いものに巻かれてしまえば良いと思っているので、
もうちょい一般的な書き方を目指してやってみようかと思っています。

うーん、、、難しい。。

「module? class?」への6件のフィードバック

  1. これはモジュール内でdefで書くか、classで書くかって話ですか?

    だとすれば、今まさに自分が悩んでるとこですw
    defで書けば今までどおりの関数なのだけど
    クラスで書くと引数や返り値を何種類も書けるので
    自由度が高く便利だなと思います。
    でも自由すぎてコードの汚さに拍車かかってます。

  2. >hajime先輩
    そう、そういう事、まさにその通りです。
    モジュール内でクラス書いて、その中で関数宣言してるんですが、モジュールとクラスの明確な差異を出せずにいるような状態なので、実際クラスは必要なかったんじゃないかと思っています。
    いろんなクラスを混在させてシステム組む、ってなればそれはクラスを使う意味もあるのかなと思いますけど、僕のプログラムは現状ただの設計ミスみたいになってますwww

    コードが汚いというかなんというか、もうエラいことになっています。

  3. pythonはクラス書きやすいからついつい使っちゃうよね。
    今は覚えたてだから使い方下手でもしょうがないかな、と自分に言い訳。

    でも、標準のクラスとか使う時に
    すごく意識するようになった。
    そのうち自然と使いどころがわかるようになるといいなぁ。

    クラスはあとは継承が結構便利ですよね。

  4. >hajime先輩
    そう!仕方ないのです!
    最近Javaの本とか読んでOOPに慣れようと頑張ったりしてるんですが、やっぱり実戦じゃないと感覚的に理解できないというか。
    早く感覚的に使いこなせるようになりたいです。
    そして今、まだ継承とか全然使ってませんww
    完全に間違った使い方してると思います、現状。
    話に乗れなくてサーセンww

  5. なんか似たようなことするときに便利だよ。

    たとえば、GUIで表を作るのは結構めんどうなのね。
    でも右クリックメニューの内容を変えただけの表を3枚作らなきゃいけない時とか、
    最初のひとつを継承して、右クリック関数だけオーバーライドしてしまえばいい。

    まぁ、「やばい!こんなん2度も書きたくねー!」って思ってその場で覚えたので
    必要なときまで心の片隅に置いておけばよいのでわー。

  6. >hajimeさん
    なるほど。
    やっぱり必要があって覚えたものほど、経験と結びついて実になりやすいですよね。
    とりあえず、心の片隅に置いときますっ。

コメントを残す

メールアドレスが公開されることはありません。