上記書籍のP143の
カレントクラスについて質問です。
上記書籍に、
【クラス定義のなかでは、カレントオブジェクトselfは定義されたクラスである】
という記述がありますが
例えば、以下のようなクラス定義あがあるとします。
class Test
print self.class
def self.method_01()
print "メソッド01"
end
def method_02()
return self
end
end
クラス定義内に3箇所selfが存在しますが、
インスタンスメソッド の method_02()内のselfはnewメソッドによって
作成されたTestクラスのインスタンスの意味だと思います。
それより上の二つのselfは確かに定義中のカレントオブジェクト・・つまりTestクラス
ですけれど、なぜ書籍では、クラス定義内でのselfという表現なのでしょうか?
個人的には、【クラス定義内で定義されるインスタンスメソッド内にあるselfを除くselfはカレントオブジェクトである】という風に、説明すべきだと思うのですが
何か私の解釈に誤りがあるのでしょうか?それとも、文面を気にしすぎなだけでしょうか?
くだらない質問ですがご意見をおきかせください。
No.2ベストアンサー
- 回答日時:
解釈としては間違ってないです。
「クラス定義の中で~」の文章を、「メソッド定義の中で~」が上書きする形で、別の意味を与えていると思えば良いと思います。
「クラス定義のコンテキストの中で」の略記と考えた方が良いか。
No.1
- 回答日時:
>クラス定義内で定義されるインスタンスメソッド内にあるselfを除くselfはカレントオブジェクトである
selfは常にカレントオブジェクトですよ。
ひとつめ、ふたつめのselfは「クラス定義の中」なのでselfは定義されたクラス(クラス名)を返す。
みっつめは「メソッド定義の中」なのでselfはレシーバを返す。
「メタプログラミングRuby」は持っていませんが、そのすぐ後のページにメソッド定義の中のselfの話があるのでは?
ああ・・なるほど、定義したクラスからnewしたインスタンスで実行するインスタンスメソッド内のselfは、これも実行中のインスタンスメソッドからすれば同じくカレントオブジェクトということですか・・・。
なるほど・・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- C言語・C++・C# C# 継承の問題で programに示された拡張をすべて含んだ上で,クラス Mammal に,そのオ 1 2022/07/22 09:48
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) pythonをjupiter notebookからmecabで頻出の高い単語の抽出について(Runt 1 2022/12/17 18:08
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- Ruby パイソンのクラスについて 3 2023/06/20 07:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラスメソッドのインスタンス...
-
インスタンスとオブジェクト
-
pythonのerrorコード
-
get() と find() の違いについて
-
「arg」は何の略?
-
エラー「メソッドまたはデータ...
-
What class are you in? には何...
-
パイソンのクラス
-
教えてください。vb5.0
-
No route matches [GET] "/post...
-
クラス名やモジュール名の競合...
-
VBAで型が一致しないエラー(バ...
-
Rubyについて質問です
-
実行時エラー450:引数の数が一...
-
エクセルVBA オートフィルタで...
-
ぱいソン
-
10円未満を切り捨てる方法は?
-
メソッド定義の構文のdefって
-
Csvファイルの最終行を取得する...
-
Ruby Selenium 要素の待機
おすすめ情報