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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

892閲覧

クラスベースビューの有用性があまりわからない。関数ベースビューのほうが直感的に操作できアレンジしやすいと感じる。

DR.py

総合スコア18

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2020/10/06 12:16

質問

今私は「動かして学ぶ!python Django開発入門」を参考に自分の作りたいWEBアプリケーションを作っているのですが、サイトを作っている中でもともとクラスベースで書いていた部分にアレンジを加えたい場合に調べてみても関数ベースで紹介してるサイトのほうが多いと感じ関数ベースで書いています。
自分の中でクラスベースはわかりにくく決まった動きしかできないイメージがあるのですが、これは間違えていますか?
ここで疑問に思ったのですが、関数ベースではなくクラスベース(generic view)で書くメリットは何でしょうか。またクラスベースを好きなようにアレンジしたいのですがクラスベースを勉強していくうえでおすすめの書籍などはございますか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

色々な言語でもある「クラス」
特徴的な使い方なのでその特性を利用できないのであれば質問者様がおっしゃる通り
「関数のみ」で作成されるのが一番だと私も思っています。

「クラス」のおおきな特性としてはパッケージ化があります。
例えば「c = a + b」と返す関数があったとします(加算)
次に「c = a - b」と返す関数があったとします(減算)
これらは1つずつの関数ですがたとえば四則演算などにまとめたいとなったときに
「クラス」の出番となります。(関数→メソッド)

またクラスの特徴としてプロパティがあります。
今回の例場合では「a」「b」をプロパティとして設定してあげれば
あとはメソッドを呼ぶだけで処理を行うことができる。
またクラス化する事で複数のクラスを作成し各々の値を「プロパティ」に登録し保存することができます。

また特徴的なのが「継承」という方法で元のクラスに対して機能を追加する事ができます
(クラスの上にクラスをかぶせるイメージ)

たとえば複数の画面で同じような処理(メニュー等)をする場合
関数を用意して引数で与えてあげればよいのですが
引数が複雑だったりする場合、クラス化の意味が出てくるでしょう。

私の場合ですが仕事でプログラムする為あえてクラス化を避ける場合があります。

理由は

  • メンテナンス性

→基底クラスの設計が悪いと継承クラスへの影響が大きい

  • 各開発者の能力に頼る所が大きい

→システム全体を理解できる方ばかりではありません。
人によっては基底クラスの変更が必要ないのに修正を行い、
結果他箇所まで影響が広がる場合がある。

用は「クラス」もプログラムの中では道具の一つ
利用価値が高いと判断すれば使えば良いし、低いと思えば無理に使わなくても良いと
私は思っています。

投稿2020/10/07 03:01

kuma_kuma_

総合スコア2506

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

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

DR.py

2020/10/07 04:12

ありがとうございます。 最初から無理してクラスベースを使うよりも関数ベースで作っていくうえでクラスを使うと判断したタイミングで使っていくようにします。 丁寧な回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問