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

回答編集履歴

2

d

2020/05/29 08:07

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -15,7 +15,7 @@
15
15
  self.a = None
16
16
 
17
17
  def func():
18
- self.b = 1 # ここで初めて属性 a が定義される
18
+ self.b = 1 # ここで初めて属性 b が定義される
19
19
 
20
20
  inst = MyClass()
21
21
 

1

d

2020/05/29 08:07

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > 初期化をしていますが、なぜなのでしょうか?
2
2
 
3
- 属性はオブジェクトを作成した段階で定義しておくことが、設計上好ましいからになります。
3
+ 属性はオブジェクトを作成した段階で定義しておくことが、設計上好ましいからという理由になります。
4
4
  今回の場合、x, y という属性は MulLayer が持っているべき属性なので、`__init__(self)` 内で定義します。その時点でいれるべき値がない場合は None で初期化する場合が多いです。
5
5
  コードの可読性の面でもいろんなメソッド内で属性が定義されているよりも `__init__(self)` 内でそのクラスがもつ属性がまとめて定義されていたほうがわかりやすいです。
6
6