[過去ログ]
くだすれPython(超初心者用) その46【Ruby禁止】 (1002レス)
くだすれPython(超初心者用) その46【Ruby禁止】 http://mevius.5ch.net/test/read.cgi/tech/1577948214/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
768: デフォルトの名無しさん [sage] 2020/02/21(金) 16:02:46.88 ID:x3GQj6xQ インスタンス変数についての質問です 他言語(c/c++/c#)から入った人間の例に漏れずself/clsって何なの…となりました で色々見ているのですが1番大きな疑問はインスタンス変数です サンプル見ると大体コンストラクタでself.x=とかやってますがこのxはどこで定義されているのですか? 仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です それに関数で新しく定義出来てしまうならインスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります この辺りの解説を探しても見つけられませんでした ご教授頂ければ幸いです http://mevius.5ch.net/test/read.cgi/tech/1577948214/768
770: デフォルトの名無しさん [sage] 2020/02/21(金) 16:35:43.13 ID:RiyafmFC >>768 >インスタンシエイト時にそのオブジェクトがどのようなメンバを持つのかの情報が欠落していることになります オブジェクトがどういうメンバを持つかは静的じゃなく動的 インスタンス化後にインスタンス変数やメソッドを追加できる クラスはディクショナリみたいなものだと思っておけばいいよ https://ideone.com/aAGA0y >仮にこれが定義としてもコンストラクタや関数内部で定義したものがスコープ外でつかえるのは妙です メソッドの第1引数にレシーバのオブジェクトが渡されるので それを`self`という名前の引数で受けてメソッド内では渡されたレシーバを使って `self.x`とかでインスタンス変数を参照してるのでスコープ外ではない ちなみにselfは慣習として使われてる変数名であってhogeとかに変えても問題なく動く http://mevius.5ch.net/test/read.cgi/tech/1577948214/770
773: デフォルトの名無しさん [sage] 2020/02/21(金) 17:31:14.15 ID:2TMdipPT >>768 Ruby では、デフォルトでインスタンス変数は、private だから、 アクセサー(attr_accessor)で宣言しないと、クラス外部からアクセスできない class A attr_accessor :x def initialize @x = 1 end end p A.new.x #=> 1 http://mevius.5ch.net/test/read.cgi/tech/1577948214/773
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.037s