回答編集履歴

5

変数表示追加

2022/06/29 01:05

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -20,6 +20,12 @@
20
20
  (30, 40)
21
21
  >>> b.x, b.y
22
22
  (30, 50)
23
+ >>> vars(Hoge)
24
+ mappingproxy({'__module__': '__main__', 'x': 30, '__init__': <function Hoge.__init__ at 0x6fffffdad160>, '__dict__': <attribute '__dict__' of 'Hoge' objects>, '__weakref__': <attribute '__weakref__' of 'Hoge' objects>, '__doc__': None})
25
+ >>> vars(a)
26
+ {'y': 40}
27
+ >>> vars(b)
28
+ {'y': 50}
23
29
  ```
24
30
 
25
31
  クラス変数と同じ名前のインスタンス変数を作ることもできて、インスタンス変数が優先されます。
@@ -32,10 +38,6 @@
32
38
  30
33
39
  >>> vars(a)
34
40
  {'y': 40, 'x': 60}
35
- >>> vars(b)
36
- {'y': 50}
37
- >>> vars(Hoge)
38
- mappingproxy({'__module__': '__main__', 'x': 30, '__init__': <function Hoge.__init__ at 0x6fffffdad160>, '__dict__': <attribute '__dict__' of 'Hoge' objects>, '__weakref__': <attribute '__weakref__' of 'Hoge' objects>, '__doc__': None})
39
41
  >>> del a.x
40
42
  >>> a.x
41
43
  30

4

vars(Hoge) 追記

2022/06/29 01:03

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -34,6 +34,8 @@
34
34
  {'y': 40, 'x': 60}
35
35
  >>> vars(b)
36
36
  {'y': 50}
37
+ >>> vars(Hoge)
38
+ mappingproxy({'__module__': '__main__', 'x': 30, '__init__': <function Hoge.__init__ at 0x6fffffdad160>, '__dict__': <attribute '__dict__' of 'Hoge' objects>, '__weakref__': <attribute '__weakref__' of 'Hoge' objects>, '__doc__': None})
37
39
  >>> del a.x
38
40
  >>> a.x
39
41
  30

3

冗長説明削除

2022/06/29 01:01

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -22,7 +22,7 @@
22
22
  (30, 50)
23
23
  ```
24
24
 
25
- インスタンスにクラス変数と同じ名前のインスタンス変数を作ることもできて、インスタンス変数が優先されます。
25
+ クラス変数と同じ名前のインスタンス変数を作ることもできて、インスタンス変数が優先されます。
26
26
 
27
27
  ```python
28
28
  >>> a.x = 60

2

挙動が変わる点を追記

2022/06/29 00:59

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -22,3 +22,23 @@
22
22
  (30, 50)
23
23
  ```
24
24
 
25
+ インスタンスにクラス変数と同じ名前のインスタンス変数を作ることもできて、インスタンス変数が優先されます。
26
+
27
+ ```python
28
+ >>> a.x = 60
29
+ >>> a.x
30
+ 60
31
+ >>> b.x
32
+ 30
33
+ >>> vars(a)
34
+ {'y': 40, 'x': 60}
35
+ >>> vars(b)
36
+ {'y': 50}
37
+ >>> del a.x
38
+ >>> a.x
39
+ 30
40
+ >>> vars(a)
41
+ {'y': 40}
42
+ ```
43
+
44
+

1

使用例追加

2022/06/29 00:30

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,2 +1,24 @@
1
1
  前者はインスタンス変数。インスタンス毎に異なる値を持てます。
2
2
  後者はクラス変数。インスタンス全体でひとつの値を共有できます。
3
+
4
+ ```python
5
+ >>> class Hoge:
6
+ ... x = 10
7
+ ... def __init__(self):
8
+ ... self.y = 20
9
+ ...
10
+ >>> a = Hoge()
11
+ >>> b = Hoge()
12
+ >>> a.x, a.y
13
+ (10, 20)
14
+ >>> b.x, b.y
15
+ (10, 20)
16
+ >>> Hoge.x = 30
17
+ >>> a.y = 40
18
+ >>> b.y = 50
19
+ >>> a.x, a.y
20
+ (30, 40)
21
+ >>> b.x, b.y
22
+ (30, 50)
23
+ ```
24
+