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

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

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

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

Q&A

解決済

1回答

1132閲覧

selfと引数の取得エラー

Untitled_Sample

総合スコア192

Python 3.x

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

0グッド

0クリップ

投稿2018/04/25 07:25

L配列から、登録された値を取得したいと思いました。

どうして、引数エラーになるのでしょうか?

#実際のコード

python

1""" 2# 標準 3 4r=[] 5l=[1,[2,[[3],4]],5,[6,[[7,8],9]]] 6 7 8def Sample(tes): 9 global r 10 for i in tes: 11 if isinstance(i,list): 12 Sample(i) 13 else: 14 r.append(i) 15 16Sample(l),print(r) 17""" 18 19 20 21class SampleS: 22 def __init__(self): 23 self.r=[] 24 self.l=[1,[2,[[3],4]],5,[6,[[7,8],9]]] 25 26 self.Sample(self.l),print(self.r) 27 28 def Sample(self): 29 for i in self: 30 if isinstance(i,list): 31 self.Sample(i) 32 else: 33 r.append(i) 34 35 36if __name__ == '__main__': 37 SampleS()

#実際のエラー
TypeError: Sample() takes 1 positional argument but 2 were given

TypeError:Sample()は1つの位置引数を取るが、2つが与えられた

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

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

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

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

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

guest

回答1

0

ベストアンサー

selfはオブジェクトのインスタンス自身を表す引数です。普通に呼び出すと暗黙的に渡されます。

引数の個数を合わせるためには、self.Sample(self.l)はself.Sample()とする必要があります。それか、self.Sampleの定義にもう一つ引数を増やしてそっちを使います。selfの属性でやりとりしても良いでしょう。

一応標準と同じ出力になるように書き換えましたが、どうしてこうしたいのかはよくわからなかったので、普通に関数で書けば良いと思います(再帰はともかく・・・このようなクラスを作ってもメリットはない)。

python

1class SampleS: 2 def __init__(self): 3 self.r=[] 4 self.l=[1,[2,[[3],4]],5,[6,[[7,8],9]]] 5 6 self.Sample(self.l) 7 print(self.r) 8 9 def Sample(self, arg): 10 for i in arg: 11 if isinstance(i,list): 12 self.Sample(i) 13 else: 14 self.r.append(i) 15 16if __name__ == '__main__': 17 SampleS()

追記

できるだけ「どうして」ではなく、自分で考えるか調べましょう。
また、これはとても基礎的なことなので、まともな入門書を一冊買って読み込み、ちゃんと理解すればそもそも質問しなくて済むことです。
自力でやらないといつまで経っても上達しませんよ、とは書いておきます。

投稿2018/04/25 07:31

編集2018/04/25 07:45
hayataka2049

総合スコア30933

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

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

Untitled_Sample

2018/04/25 08:02

python書籍は一冊も所持していない。 検討して見ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問