teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

簡単な実験を追加

2018/10/28 13:16

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,4 +1,30 @@
1
1
  前者はインスタンス変数、後者はクラス変数であり、まったくの別物です。
2
2
 
3
+ ```python
4
+ class Sample_1:
5
+ def __init__(self):
6
+ self.x = object() # オブジェクトを入れておく
7
+
8
+ class Sample_2:
9
+ x = object()
10
+ def __init__(self):
11
+ pass
12
+
13
+ s1_a = Sample_1()
14
+ s1_b = Sample_1()
15
+ print(s1_a.x is s1_b.x) # => False
16
+
17
+ s2_a = Sample_2()
18
+ s2_b = Sample_2()
19
+ print(Sample_2.x is s2_b.x) # => True クラス変数であることの確認
20
+ print(s2_a.x is s2_b.x) # => True インスタンス間で共有される
21
+
22
+ s2_a.x = "hoge" # 面倒くさいことに、こう書くと新たなインスタンス変数が生成される
23
+ print(s2_a.x is s2_b.x) # => False
24
+ print(s2_a.x) # => hoge
25
+ print(s2_b.x) # => <object object at 0x7f71ffab10a0>
26
+
27
+ ```
28
+
3
29
  参考リンク
4
30
  [Python のクラス変数とインスタンス変数ってなに? - いっきに Python に詳しくなるサイト](http://nihaoshijie.hatenadiary.jp/entry/2018/01/15/225346)

1

追記

2018/10/28 13:16

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,1 +1,4 @@
1
- 前者はインスタンス変数、後者はクラス変数であり、まったくの別物です。
1
+ 前者はインスタンス変数、後者はクラス変数であり、まったくの別物です。
2
+
3
+ 参考リンク
4
+ [Python のクラス変数とインスタンス変数ってなに? - いっきに Python に詳しくなるサイト](http://nihaoshijie.hatenadiary.jp/entry/2018/01/15/225346)