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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,049

marugo128

score 6

■前提・概要

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

#下記の様にほぼ同一処理を行いたい
#変数に格納
user_name = "山田太郎"
mail = "test@google.com"
password = "12345"

#配列に格納
info_list = [
    user_name,
    mail,
    password
    ]


#変数に格納(idのみ追加)
user_name = "山田太郎"
mail = "test@google.com"
password = "12345"
id = 5

#配列に格納(idのみ追加)
info_list = [
    user_name,
    mail,
    password,
    id
    ]

■該当のソースコード

#main.py
from func import BaseClass,SubClass

#基底クラスのインスタンス生成
info = BaseClass()
info.input_list_run()
input_list=info.get_iput_list()

print(input_list)
print("--------------------")

#サブラクスのインスタンス生成
info_sub = SubClass()
info_sub.edit_list_run()
edit_list=info_sub.get_edit_list()
print(edit_list)
#func.py
class BaseClass:
    def input_var(self):
        #変数に格納
        self.user_name = "山田太郎"
        self.mail = "test@google.com"
        self.password = "12345"

    def input_list(self):
        #配列に格納
        self.input_list = [
            self.user_name,
            self.mail,
            self.password
        ]

    def input_list_run(self):
        self.input_var()
        self.input_list()


    def get_iput_list(self):
        return self.input_list


class SubClass(BaseClass):
    def edit_var(self):
        #基底クラスのinput_varを呼ぶ
        super().input_var()
        self.id = 5

    def edit_list(self):
        #基底クラスのinput_listを呼ぶ
        super().input_list()
        self.edit_list = self.input_list
        self.edit_list = self.edit_list.append(self.id)

    def edit_list_run(self):
        self.edit_var()
        self.edit_list()


    def get_edit_list(self):
        return self.edit_list

上記の結果

['山田太郎', 'test@google.com', '12345']
--------------------
None

#上記のNoneを下記にしたい
#['山田太郎', 'test@google.com', '12345',5]


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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+3

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

self.edit_list.append(self.id)

もしくは

self.edit_list += [self.id, ]

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/21 19:46

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

    キャンセル

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

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる