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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

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

Q&A

解決済

2回答

4256閲覧

Python クラス図について

person

総合スコア224

Python 3.x

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

0グッド

0クリップ

投稿2020/05/14 04:49

ソースコードの内容というか各ソースファイルにあるクラスや関数を視覚的に分かるようにまとめたいです。

そこでクラス図というのがあるそうですが、このクラスというのはソースコードの class に該当するものですか?
この場合、クラスのないソースコードは表現できないということでしょうか?
(クラスを使わないプログラムがそもそも望ましくない?)

クラスを使っていないソースファイルの関係性をまとめるにはオリジナルな描き方になってしまうのでしょうか?
それとも他に表現可能なUMLなど図法があるのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

クラスを使うべきか?という疑問が出るのなら、まずはクラスの概念やメリットを勉強したほうがいいでしょう。必ず使うべきというものでもありません。
また、クラス図に何を求めるかはあなたにしか判断できないと思うので、試してみるのが一番でしょう。
一例(pyreverse)
ソースコードからドキュメントを起こすのが目的であれば、そのソースコードの作りに依存するため、何がベストとは言えないでしょう。

投稿2020/05/14 05:09

x98000

総合スコア1096

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

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

0

doxygen 等のツールによりソースコードから自動生成出来ます。
ソースコードを解析して得られるものは通常 classで定義したものに限ります。
以下のように、動的(実行時)に生成されるクラスは含まれません。

  • type や namedtuple により生成したクラス。(コメントで補足可能)
  • eval や compile で生成されるもの。(出来れば避けるべき)

クラスに所属しない関数に関しては、クラス図はありませんが、
実行時の呼び出し情報等を元にしたコールグラフといったものもあります。


実体はクラスだが、動的に生成される為ドキュメントではクラスと扱われないものの例。
通常は動的に生成した Point, C クラスはVariable に分類される。

イメージ説明

コメントにより情報を補足すればクラスとしての扱いは可能。
但し、静的解析では必要な情報を得られない為、
継承元のクラス等をドキュメント内でも再度指定する必要があります。

イメージ説明


解析対象としたコードのサンプル

python

1# sample.py 2 3 4from collections import namedtuple 5 6class A: 7 """ 8 @class A 9 @brief sample A class 10 """ 11 def foo(self): 12 pass 13 14class B(A): 15 """ 16 @class B 17 @brief sample B class 18 """ 19 def bar(self): 20 pass 21 22## 23# @class Point 24# @brief Point class 25Point = namedtuple("Point", "x,y") 26 27## 28# @class C 29# @inherit B 30C = type("C", (B,), {}) 31 32

投稿2020/05/14 05:50

編集2020/05/14 06:08
teamikl

総合スコア8760

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問