![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
上記書籍の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ランキング
-
1、Rstudioで回帰直線を求める...
-
ビーリアルのユーザー名を変え...
-
教えてください
-
再起動後必ず2つのエラーが出...
-
英数字を含む文字列(0-9,A-Z)...
-
C言語の入力した文字を反転させ...
-
プログラミングの課題で1万円か...
-
Ruby on railsをrails sで立ち...
-
実行時エラー450:引数の数が一...
-
(再質問)エクセルのマクロボ...
-
エクセルvbaでチェックボックス...
-
100万件越えCSVから条件を満た...
-
これらは書誌情報だと思うので...
-
情報の表現。()内がどうしても...
-
pythonのerrorコード
-
三項でたとえば交換って
-
WinSCPで画像のように puttyを...
-
パソコンのスクリーンセーバー...
-
こういう問題分をよんだとき
-
バーチャルボックスが使えなく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数の引数に複数のユーザ定義...
-
インスタンス変数とクラス変数...
-
インスタンスとオブジェクト
-
子クラスのインスタンスから親...
-
ImageButtonのマウスオーバーが...
-
クラスメソッドのインスタンス...
-
書籍 メタプログラミングRuby...
-
ストリームへの保存処理
-
::ってなに?
-
Pythonについてです。 何回見直...
-
お互いをメンバに持つようなク...
-
Ruby 特異メソッドのnewが先に...
-
get() と find() の違いについて
-
「arg」は何の略?
-
エクセルVBA オートフィルタで...
-
教えてください。vb5.0
-
テンプレートの特殊化でコンパ...
-
What class are you in? には何...
-
変数の隠蔽とは?
-
エラー「メソッドまたはデータ...
おすすめ情報