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

回答編集履歴

2

追記

2017/10/12 14:58

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -2,4 +2,49 @@
2
2
 
3
3
  タイポによってなんでそのようなエラーが起きるかは、次のページをご覧ください。
4
4
  以前も同様の質問があったので。
5
- [エラーが返ってきます(udasityでのpythonの授業内容)原因が分かる方おしえていただけませんか?](https://teratail.com/questions/91394)
5
+ [エラーが返ってきます(udasityでのpythonの授業内容)原因が分かる方おしえていただけませんか?](https://teratail.com/questions/91394)
6
+
7
+ リンク切れしたときのために、一応コピペしておきます。
8
+ 引用の形式で書きますが、原文を書いたのも私です。
9
+ > 原因がわかりました。タイポです。
10
+ > まず、同じエラーが出るコードを示します。
11
+ > ```Python
12
+ > class MyClass():
13
+ > def _init_(arg):
14
+ > pass
15
+
16
+ > my_class = MyClass(1)
17
+
18
+ > """出力
19
+ > Traceback (most recent call last):
20
+ > File "hoge.py", line 5, in <module>
21
+ > my_class = MyClass(1)
22
+ > TypeError: object() takes no parameters
23
+ > """
24
+ > ```
25
+
26
+ > このエラーの原因は、`__init__`と書くべきところを、`_init_`と書いていることです。
27
+
28
+ > ---
29
+ > もう少し具体的にお話しします。
30
+ > Pythonの全てのクラスは、[object](https://docs.python.jp/3/library/functions.html? highlight=object#object)を継承しています。
31
+
32
+ > よって、次のように、一見空っぽなクラスを作っても...
33
+ > ```Python
34
+ > def EmptyClass():
35
+ > pass
36
+
37
+ > print(dir(EmptyClass))
38
+
39
+ > """出力
40
+ > ['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
41
+ '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
42
+ > """
43
+ > ```
44
+
45
+ > ...このように、数多くのメソッドを持ちます。
46
+ > ですので、必須のメソッドである`__init__`をタイポしても、自動的に実装されてしまうのです。
47
+
48
+ > ここで、先ほどのエラーをもう一回見てみましょう。
49
+ > `TypeError: object() takes no parameters` **『objectは引数を取らないよ』**
50
+ > 確かに直接的な原因を指摘しているエラーメッセージだったんですね。

1

追記

2017/10/12 14:58

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,1 +1,5 @@
1
- `__int__`は`__init__`の間違いだと思います。
1
+ `__int__`は`__init__`の間違いだと思います。
2
+
3
+ タイポによってなんでそのようなエラーが起きるかは、次のページをご覧ください。
4
+ 以前も同様の質問があったので。
5
+ [エラーが返ってきます(udasityでのpythonの授業内容)原因が分かる方おしえていただけませんか?](https://teratail.com/questions/91394)