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

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

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

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

Q&A

解決済

2回答

5034閲覧

pythonのselfは自分自身といいますが、自分自身という意味がわからないです

blendegg

総合スコア81

Python

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

0グッド

0クリップ

投稿2019/03/22 10:45

編集2019/03/22 10:47

わからないこと

pythonのselfはクラス自身を表すとのことですが、どういうことでしょうか?

pythonではすべて参照渡しということですから、selfにはclassの場所が渡されているのだと思います。以下のコードでもselfを出力するとメモリの場所らしきメッセージが出てきます。
データのある場所を渡しているのだと思いますが、なんのデータなんでしょうか?

selfによって実現出来る機能として認識していることに、「クラス内の変数が共有されるようになる」というものがあると思います。selfにクラスの場所が入ることでこのような機能が実現されるロジックがわからないです。

該当のソースコード

python

1class test(): 2 def __init__(self,var): 3 self.v= var 4 def func(self): 5 print(self.v) 6 print(self) 7a = test("aaa") 8a.func()

補足

このことについて調べているのですが、なかなか理解出来ません。
初心者なのでできるだけ簡単に教えていただけるとありがたいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

「クラス」と「インスタンス(オブジェクト)」の区別をまずつけましょう。両者はまったくの別物です。

listなどはクラスの名前です。[1,2,3]と書かれた結果メモリ上に生成されるものがオブジェクトです。

selfはオブジェクト自身です。それ自体は何でも良いのですが、属性などを介してメソッド間や内外で値をやり取りできるように見える、というのがミソです。

投稿2019/03/22 10:51

hayataka2049

総合スコア30933

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

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

blendegg

2019/03/23 01:25

回答ありがとうございます。 selfはクラスを実体化したインスタンスということですよね。 上のコード内でいうと、 self.v= var の部分は test.v=var あるいは a.v=var になっているということでしょうか(testかa部分はインスタンス)。 インスタンスはクラスをコピーしたものですから test.test.v =var とはなりませんよね
hayataka2049

2019/03/23 01:26

a.v=varということです。試しにprint(a.v)とでもしてみてください。
blendegg

2019/03/23 02:23

ありがとうございました。
guest

0

誤回答につき削除申請中

投稿2019/03/22 13:00

編集2019/03/22 13:25
nico25

総合スコア830

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問