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

回答編集履歴

1

例をわかりやすいものに。

2021/11/03 03:30

投稿

TakaiY
TakaiY

スコア14431

answer CHANGED
@@ -5,19 +5,20 @@
5
5
  pythonの変数に型はありません。 ですが、その時点で束縛しているオブジェクト(インスタンス)の型を持つと思えばいいでしょう。
6
6
 
7
7
  ```python
8
+ x = [1, 2, 3]
9
+ y = x.count(3)
10
+ print(y) # -> 1が表示される。
8
11
 
9
- = 10
12
+ x = "abc"
10
- = x + 20
13
+ y = x.upper()
11
- print(x) # -> 30が表示される。
14
+ print(y) # -> ABCが表示される。
12
-
13
- x = "10"
14
- x = x + "20"
15
- print(x) # -> 1020が表示される。
16
15
  ```
17
16
 
18
- 始めのxにはintのインスタンスが束縛されていて、int + int では加算が行なわて、作られた30がxに束縛されます。
17
+ 始めのxにはlistのインスタンスが束縛されていて、.cont(3) では含まる3の数を数えます。
19
- 次に、同じxにstr(文字列) 10 のインスタンスが束縛されて、 str + strでは文字列の結合が行なわれて、1020がx束縛されます。
18
+ 次に、同じxにstr(文字列) abc のインスタンスが束縛されて、 .upper() では、大文字に変換されます。
20
19
 
20
+ xがリストのときには、リストのメソッドが使え、xが文字列のときには文字列のリストが使えるということになります。
21
+
21
22
  > .append()メソッドは通常の関数と呼び出され方が異なるのはなぜか?
22
23
 
23
24
  通常の関数と同じ呼び出されかただと思いますが、どのように違うと思うのでしょう?
@@ -27,4 +28,7 @@
27
28
  説明したように、Aにはこの時点で、リストのインスタンスが束縛されています。pythonの構文では、A.append は 変数Aのappendメソッドではなく、その時点でAに束縛されているオブジェクト(インスタンス)のappendメソッドが呼び出されます。
28
29
 
29
30
 
30
- pythonの変数に型(クラス)は無く、操作は、その時点で束縛しているオブジェクトに作用するということです。
31
+ pythonの変数に型(クラス)は無く、操作は、その時点で束縛しているオブジェクトに作用するということです。
32
+
33
+
34
+ ただ、このように同じ変数に違う型のオブジェクトを束縛するような使いかたは混乱するので、実際にプログラミングをするときにはあまり使いませんね。