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

回答編集履歴

1

追記

2018/10/28 13:13

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,2 +1,28 @@
1
1
  後者はクラス変数なので、インスタンス間で共有されます。
2
- また、Sample_2.aと書いてもアクセスできます。
2
+ また、Sample_2.aと書いてもアクセスできます。
3
+ ```Python
4
+ class Sample_2():
5
+ clsvar = "hoge"
6
+
7
+ def __init__(self):
8
+ self.instvar = "spam"
9
+
10
+ def __str__(self):
11
+ return f'{self.clsvar}{self.instvar}'
12
+
13
+ inst1 = Sample_2()
14
+ inst2 = Sample_2()
15
+
16
+ print(inst1, inst2)
17
+
18
+ Sample_2.clsvar = 'piyo' # inst1.clsvar = 'piyo' と書くと、インスタンス変数を新たに生成してしまう
19
+ inst1.instvar = 'ham'
20
+
21
+ print(inst1, inst2)
22
+ ```
23
+
24
+ **実行結果** [Wandbox](https://wandbox.org/permlink/HlXv8gae8E08Vx0u)
25
+ ```
26
+ hogespam hogespam
27
+ piyoham piyospam
28
+ ```