質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

250閲覧

クラスの1:1, 1:N対応について

hayata-yamamto

総合スコア31

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2018/04/09 05:33

Pythonにこだわらず全般的な質問ですが、業務でクラスを書くとき困ることがあります。

具体的には、
ターゲットとなるファイルや変数に対して処理を行うクラスを想定したとき、
クラスの多重度をどのように決めるかです。

よく考えることとしては、

Python

11:1 2class xxx(object): 3 def __init__(self, x): 4 self.x = x 5 6 def do_something(self): 7 # self.x に対しての処理 8 91:N 10class yyy(object): 11 def __init__(self): 12 pass 13 14 def fit(y): 15 # y に対する処理

のようなケース何ですが、皆さんは一般的にどの様に使い分けていますか?

私の感覚では、
1:1にすると、インスタンス生成の回数が多くなり、例えばアルゴリズムを複数のデータセットに対して適用する際に、少し冗長な感覚があります。しかし、対象のファイルがわかりやすいので、そういう面では良い面もある様に感じています。

一方、1:Nにすると、fit部分を変えるだけで色々なデータセットに適用できるため、モデルに重点をおいたクラスにできる様に感じています。(例えばsklearnとか)

時と場合によって違うことは重々承知の上で質問しています。
皆さんの感覚と経験を教えていただければとても嬉しく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

pythonのような言語を前提にするのなら、組み込みやライブラリのオブジェクトがかなりよくできていますから、敢えてファイルや変数を自作クラスでカプセル化する必要性を感じることはあまりありません。1:1のクラスなんかほとんど書いたことがない気がします。
むしろそういう処理なら、自作クラスを書かず、関数で済ませた方がすっきりする場合が多いです。うっかり設計の悪いクラスを書いてしまうと大変ですし。
sklearnのモデルのようなクラスが必要になるのは、処理対象のデータ以外にも内部に状態を持つ必要があるよときです。

投稿2018/04/09 05:49

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問