回答編集履歴

1

誤記修正

2023/02/17 05:49

投稿

TakaiY
TakaiY

スコア12743

test CHANGED
@@ -1,16 +1,16 @@
1
1
  他の方の回答と同じですが、違う観点から。
2
2
 
3
3
  Pointクラスの定義が、用途に対して不完全なのが原因です。
4
- 質問の定義では、クラス変数としてx、yを持ちます。ただし、コンストラクタを新規定義しておらず、また、変更するためのメソッドも無いので、それぞれの値が0固定で変更できません。
4
+ 質問の定義では、クラス変数としてx、yを持ちます。ただし、`__init__`メソッドを新規定義しておらず、また、変更するためのメソッドも無いので、それぞれの値が0固定で変更できません。
5
5
 
6
6
  この状態で
7
7
  ```python
8
8
  point = Point(x=0, y=0)
9
9
  ```
10
- このように、コンストラクタを呼ぶと、Pointクラスでは定義されていないので、デフォルトの何も引数を受け付けず、何もしないコンストラクタが呼ばれます。 引数は受け付けないので、質問のエラーが発生します。
10
+ このように、コンストラクタを呼ぶと、Pointクラスでは定義されていないので、デフォルトの何も引数を受け付けず、何もしない`__init__`メソッドが呼ばれます。 引数は受け付けないので、質問のエラーが発生します。
11
11
  dataclassにするとできるのは、dataclassがクラス定義にしたがって、適切なコンストラクタを自動で生成するからです。
12
12
  https://docs.python.org/ja/3/library/dataclasses.html#module-dataclasses
13
- > このモジュールは、__init__() や __repr__() のような special method を生成し、ユーザー定義のクラスに自動的に追加するデコレータや関数を提供します。
13
+ > このモジュールは、`__init__()``__repr__()` のような special method を生成し、ユーザー定義のクラスに自動的に追加するデコレータや関数を提供します。
14
14
 
15
15
  caseの中のPoint()については、他の方の説明のとおりです。
16
16