#[Python]09章-01 オブジェクトの基礎
今まで、文字列や数値、データ構造の分野ではリストやタプルなどに触れました。データ構造の個所で触れましたが、これらはオブジェクトと言いました。
さて、このオブジェクトとは何でしょう。まずはオブジェクトについて説明して少し掘り下げていきたいと思います。
##オブジェクトとは
まずはPython Consoleにて以下のコードを入力して確認してみましょう。
>>> S = 'hello'
>>> type(S)
<class 'str'>
Sという変数に'hello'という文字列を代入しています。さて、次にtype()関数により、<class 'str'>が出力されています。
これは、S変数がが現在str型のオブジェクトであることを意味しています。
では、strオブジェクトの詳細を見てみましょう。以下のURLから閲覧できます。
https://docs.python.org/ja/3/library/stdtypes.html#text-sequence-type-str
マニュアルを見てみると、str型はテキストシーケンス型と書かれています。要するに文字列型のオブジェクトということです。
さて、マニュアルを少し下に送ると、「文字列メソッド」というものが出てきます。
例えば、一番最初にあるstr.capitalize()メソッドを実行してみましょう。
なお、このマニュアルにある、strはstr型のオブジェクトを表すので、今回実際に入力するときにはSという変数名となります。
>>> S
'hello'
>>> S.capitalize()
'Hello'
先頭のみ、大文字になったことが確認できたと思います。詳細はstr.capitalize()メソッドマニュアルを見てください。
また、ほかのメソッドも見てみましょう。str.replace()メソッドを実行してみましょう。
>>> S.replace('l', 'L')
'heLLo'
replaceメソッドにより、文字列中の文字を変更ができます。詳細はマニュアルを見てみましょう。
他にもいろいろなメソッドをマニュアルを見ながらやってみましょう。今後、マニュアルに書いてある内容は一部を除き、割愛していきたいと思います。
さて、このstr型だけではないですが、オブジェクトの型にはほかにもあります。以下のコマンドでいろいろな方を確認してみましょう。
以下はint型オブジェクトとなります。
>>> num1 = 100
>>> type(num1)
<class 'int'>
以下はfloat型オブジェクトとなります。
>>> num2 = 10.5
>>> type(num2)
<class 'float'>
以下はlist型オブジェクトとなります。
>>> ls = ['Japan', 'America', 'China']
>>> type(ls)
<class 'list'>
以下はtuple(タプル)型オブジェクトとなります。
>>> tp = (10, 20, 30)
>>> type(tp)
<class 'tuple'>
以下はdict(ディクショナリ)型オブジェクトとなります。
>>> dc = {'jp':'Japan','us':'America', 'ch':'Chine'}
>>> type(dc)
<class 'dict'>
これらそれぞれの型のオブジェクトにはメソッドを持ちます。実際に調べてみましょう。ほとんどは以下のURLに記載してあります。
https://docs.python.org/ja/3/library/stdtypes.html
<重要>
実は、あるデータとその振る舞い(メソッド)が一塊になっているものを一般にオブジェクトと言います。
例えば、
>>> ls = [1, 3, 3, 2, 1, 2, 2, 1, 1, 2]
>>> ls.count(2)
4
とすれば、lsはリスト型のオブジェクトであり、そのオブジェクトは「1, 3, 3, 2, 1, 2, 2, 1, 1, 2」というデータを持ち、count()というメソッドも持ちます。
また、関数もオブジェクト(functionオブジェクト)と言えます。
def calc_func(x):
print('関数内で実行します')
f = (x ** 2) + (3 * x) + 4
##計算結果fを返す
return f
print(type(calc_func))
【実行結果】
<class 'function'>
##オリジナルのオブジェクト
先ほどはint型やstr型、そしてlist型などのオブジェクトがありましたが、実はオブジェクトは自分で作成することができます。
これについては次回触れていきたいと思います。
##最後に
このオブジェクトの概念は非常に取り扱いの難しいものなので、最初は壁を感じるかと思います。ポイントは先ほどのURLにもあった、いろいろなマニュアルを読んでみることです。
最初は意味が分からなくても、読んでいくことで意味が分かってくるようになりますので、ポイントはマニュアルを見ながら実際に実行してみることです。
###【目次リンク】へ戻る