回答編集履歴

2

コメントの訂正

2021/08/31 02:20

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -66,9 +66,9 @@
66
66
 
67
67
  class A {
68
68
 
69
- int result; // result はクラスフィールド
69
+ int result; // result はインタンスフィールド
70
70
 
71
- static int result2 = 3; // result2 はインタンスフィールド
71
+ static int result2 = 3; // result2 はクラスフィールド
72
72
 
73
73
  // 同名のフィールドは持てない
74
74
 

1

追記

2021/08/31 02:20

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -25,3 +25,71 @@
25
25
  self.ins_result = models.CharField(max_length=10,)#点検結果
26
26
 
27
27
  ```
28
+
29
+ **追記**
30
+
31
+ Python は 1つのクラスに、同名のクラス属性とインスタンス属性を持てます。
32
+
33
+ ```Python
34
+
35
+ class A: # A はクラス
36
+
37
+ result = 3 # result は A のクラス属性
38
+
39
+ def __init__(self):
40
+
41
+ self.result = 5 # result は A のインスタンス属性
42
+
43
+
44
+
45
+ a = A() # a は A のインスタンス
46
+
47
+ print('a.result =', a.result) # a.result = 5
48
+
49
+ print('A.result =', A.result) # A.result = 3
50
+
51
+ ```
52
+
53
+ インスタンス属性が無ければ、a.result でクラス属性を参照できます。
54
+
55
+ インスタンス属性があれば、`a.result = 7` でそれを変更できますが、
56
+
57
+ インスタンス属性が無ければ、`a.result = 7` で新たにインスタンス属性を
58
+
59
+ 作ってしまいます。
60
+
61
+
62
+
63
+ Java で、同じようなコードを書くと、
64
+
65
+ ```Java
66
+
67
+ class A {
68
+
69
+ int result; // result はクラスフィールド
70
+
71
+ static int result2 = 3; // result2 はインスタンスフィールド
72
+
73
+ // 同名のフィールドは持てない
74
+
75
+ A() { result = 5; }
76
+
77
+ }
78
+
79
+
80
+
81
+ class Main {
82
+
83
+ public static void main(String[] args) {
84
+
85
+ A a = new A();
86
+
87
+ System.out.println("a.result = " + a.result);
88
+
89
+ System.out.println("A.result2 = " + A.result2);
90
+
91
+ }
92
+
93
+ }
94
+
95
+ ```