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

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

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

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

Q&A

解決済

1回答

421閲覧

Python クラスでの変数の扱いについて

masaki120

総合スコア3

Python 3.x

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

0グッド

0クリップ

投稿2022/08/19 04:11

実現したいこと

お世話になります。
Pythonのクラスについて学習中なのですが、変数の扱いについて質問があります。
以下のTest_A、Test_Bのどちらの方が保守性の面で好ましいでしょうか?
お手数おかけしますがよろしくお願いします。

該当のソースコード

Python

1class Test_A(): 2 def __init__(self): 3 self.hensu = '' 4 5 def program1(self): 6 self.hensu = 'A' 7 8 def program2(self): 9 print(self.hensu) 10 11tester = Test_A() 12tester.program1() 13tester.program2() 14 15 16 17class Test_B(): 18 19 def program1(self): 20 hensu = 'A' 21 return hensu 22 23 def program2(self, hensu): 24 print(hensu) 25 26tester = Test_B() 27hensu = tester.program1() 28tester.program2(hensu)

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

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

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

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

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

guest

回答1

0

ベストアンサー

どのような利用方法を想定しているかによって変わってくると思います。
また、Test_AとTest_Bの機能は根本的に違うので、最終的にどういう結果を求めているのか(周辺プログラムの影響も含め)がわからないため、どちらが良いかという議論になりえないかと思います。

Test_Aは
・program1ファンクションでメンバ変数「hensu」に規定値を設定する。
・program2ファンクションはメンバ変数「hensu」を出力する。

Test_Bは
・program1ファンクションは規定値を返却する。
・program2ファンクションは引数を出力する。

というようになります。

投稿2022/08/19 04:26

編集2022/08/19 04:48
Matsumon0104

総合スコア1005

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

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

masaki120

2022/08/19 04:57

ご回答ありがとうございます。 求めたい結果によって最適な機能が異なるということですね。 自身がどのようなプログラムを組むかをしっかりと整理してからABどちらを使うかを考えようと思います。 ありがとうございました。
Matsumon0104

2022/08/19 05:01

そうですね。 基本的にプログラムは他のプログラムの部品であったりする場合が多いので、その他のプログラムとの兼ね合いで最適解も変わってくると思います。 今回の例でいいますと、「クラス内のメンバ変数を他でも使いたい、外部への出力をメンバ変数以外も行いたい」といった場合はTest_Bが自然と選択されると思います。 ですが、「そんなのはしないよ。クラス内のメンバ変数はクラス内に閉じ込めて、外のプログラムでは使わせたくない」という場合はTest_Aが選択されるでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問