前提・実現したいこと
リストオブジェクトをもつクラスを定義し、
このクラスには、自身の持つリストオブジェクトへ
要素を追加する関数も定義します。
上記クラスをスーパークラスとしたサブクラスを定義します。
このサブクラスから生成した複数のインスタンスそれぞれで
スーパークラスで定義した、リストへ追加する関数を実行した時に、
インスタンスそれぞれで保有する独立したリストへの操作となるようにしたいです。
発生している問題・エラーメッセージ
インスタンスそれぞれで実行した関数の要素が
同じ一つのリストの中に追加されてしまっています。
該当のソースコード
python
1class otsukaisan: 2 'スーパークラス' 3 4 def __init__(self, okaimonolist=[]): 5 self.okaimonolist = okaimonolist 6 7 def AppendToList(self, num): 8 self.okaimonolist.append(num) 9 10 11class boy(otsukaisan): 12 "サブクラス1" 13 pass 14 15 16class girl(otsukaisan): 17 "サブクラス2" 18 pass 19 20 21takashikun = boy() 22yukikochan = girl() 23 24takashikun.AppendToList("牛乳") 25yukikochan.AppendToList("野菜") 26 27print(takashikun.okaimonolist) 28print(yukikochan.okaimonolist) 29 30"""実行結果 31['牛乳', '野菜'] 32['牛乳', '野菜'] 33""" 34 35
試したこと
サブクラスの初期化メソッドに
リストを加えてやれば意図の通りになることを確認しました。
そもそもこういう使い方をする時には
スーパークラスで定義せずサブクラスでやるべきなのか、
それともやり方が悪くてうまくいっていないのか、
ご教示いただけますと幸いです。
python
1class boy(otsukaisan): 2 "サブクラス1" 3 4 def __init__(self, okaimonolist=[]): 5 self.okaimonolist = okaimonolist 6 7 8class girl(otsukaisan): 9 "サブクラス2" 10 11 def __init__(self, okaimonolist=[]): 12 self.okaimonolist = okaimonolist
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。