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

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

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

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

Q&A

解決済

1回答

2585閲覧

python3 selfの意味? エラー コード

Untitled_Sample

総合スコア192

Python 3.x

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

0グッド

1クリップ

投稿2018/03/03 01:13

編集2018/03/03 01:29

self を
いろいろ調べたのですが、結局なんなのか不明なままです。

最低ひとつの引数を持ち。自分自身を表すののが、self ? などの解釈です

python

1class Hello(): 2 def Sain(self): 3 return "Hello world" 4 5Hello.Sain()

エラー

TypeError 欠落している1つの位置的な引数: 'self' TypeError ketsuraku shite iru 1tsu no ichi-tekina hikisū: ' Self'

自分自身を返してるのにエラーには成らないのでは?

エラー内容に記述の失敗と有りますが、
普段通りの書き方なのに

どうして、エラーなのでしょうか?

#下記で実行可能でした。

print( Hello.Sain("") )

単に引数不足ですか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

まずselfという引数の名前は慣習(実際には何でも良い)です。

次にSain()の正しい実行方法はHello().Sain()です。Hello()でHelloクラスのインスタンスを生成、続けて.Sain()でそのインスタンスのメソッドを呼び出します。こうすることでdef Sain(self):selfにHelloクラスのインスタンスが渡されます。

最後にHello.Sain("")とした場合に関しては、Helloクラスのインスタンスを生成せずdef Sain(self):self""を渡します。そういう使い方をするケースもあることにはありますが、あまり良い使い方ではないと思います。少なくともそういう使い方をするなら以下のようにクラスメソッドとして定義するよ良いと思います。

python

1class Hello(): 2 @classmethod 3 def Sain(cls, arg1): 4 return "Hello world"

投稿2018/03/03 03:17

編集2018/03/03 03:20
YouheiSakurai

総合スコア6142

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

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

Untitled_Sample

2018/03/03 04:58

上記サンプルの呼び出し方は どうなりますか?
YouheiSakurai

2018/03/03 05:00

Hello.Sain()の事ですか?Hello.Sain("")の事ですか?
Untitled_Sample

2018/03/03 05:14

回答のサンプルです。 Hello.Sain()と呼び出すとエラーに成りますので、 どの様な呼び出し方なのかと思いました。
Untitled_Sample

2018/03/03 05:37

Hello().Sain() でも同様のエラーです
YouheiSakurai

2018/03/03 05:45

回答のサンプルはarg1があるのでHello.Sain("")等々です。定義からarg1を取り除けばHello.Sain()で呼び出せるようになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問