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

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

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

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

Q&A

解決済

1回答

2134閲覧

Python継承先のリスト追加方法につきまして

marugo128

総合スコア8

Python

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

0グッド

0クリップ

投稿2017/10/21 08:49

###■前提・概要
Pythonで以下のような似た処理をまとめたいと考えており、
同一処理に特定の項目のみを追加していきたいと思っています。
継承で処理をまとめ継承先(サブクラス)のリストを追加する際に想定していた動作と違うため
ご教示頂きたくお願いします。

Python

1#下記の様にほぼ同一処理を行いたい 2#変数に格納 3user_name = "山田太郎" 4mail = "test@google.com" 5password = "12345" 6 7#配列に格納 8info_list = [ 9 user_name, 10 mail, 11 password 12 ] 13 14 15#変数に格納(idのみ追加) 16user_name = "山田太郎" 17mail = "test@google.com" 18password = "12345" 19id = 5 20 21#配列に格納(idのみ追加) 22info_list = [ 23 user_name, 24 mail, 25 password, 26 id 27 ] 28 29

###■該当のソースコード

python

1#main.py 2from func import BaseClass,SubClass 3 4#基底クラスのインスタンス生成 5info = BaseClass() 6info.input_list_run() 7input_list=info.get_iput_list() 8 9print(input_list) 10print("--------------------") 11 12#サブラクスのインスタンス生成 13info_sub = SubClass() 14info_sub.edit_list_run() 15edit_list=info_sub.get_edit_list() 16print(edit_list) 17 18 19 20

python

1#func.py 2class BaseClass: 3 def input_var(self): 4 #変数に格納 5 self.user_name = "山田太郎" 6 self.mail = "test@google.com" 7 self.password = "12345" 8 9 def input_list(self): 10 #配列に格納 11 self.input_list = [ 12 self.user_name, 13 self.mail, 14 self.password 15 ] 16 17 def input_list_run(self): 18 self.input_var() 19 self.input_list() 20 21 22 def get_iput_list(self): 23 return self.input_list 24 25 26class SubClass(BaseClass): 27 def edit_var(self): 28 #基底クラスのinput_varを呼ぶ 29 super().input_var() 30 self.id = 5 31 32 def edit_list(self): 33 #基底クラスのinput_listを呼ぶ 34 super().input_list() 35 self.edit_list = self.input_list 36 self.edit_list = self.edit_list.append(self.id) 37 38 def edit_list_run(self): 39 self.edit_var() 40 self.edit_list() 41 42 43 def get_edit_list(self): 44 return self.edit_list 45 46 47

###上記の結果

python

1 2['山田太郎', 'test@google.com', '12345'] 3-------------------- 4None 5 6#上記のNoneを下記にしたい 7#['山田太郎', 'test@google.com', '12345',5] 8 9

基底クラスは想定していた動きですがサブクラスが「None」になり、どの様にすれば良いかご教示頂きたくお願い致します。
サブクラスの結果では['山田太郎', 'test@google.com', '12345',5]にしたいと思っています。

サブクラスのedit_listメソッド内でのappend関数の所でリストがNoneになっています。
(直前まではリストが見える事は確認しています。)

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1self.edit_list = self.edit_list.append(self.id)

python

1self.edit_list.append(self.id)

もしくは

python

1self.edit_list += [self.id, ]

としないとself.edit_listにNoneが代入されてしまいます。

投稿2017/10/21 09:16

YouheiSakurai

総合スコア6142

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

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

marugo128

2017/10/21 10:46

回答ありがとうございます。継承の問題ではなく、append関数の使い方の問題でしたね。分かりやすい回答大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問