Python独学ならTech-Joho TOP > Python入門カリキュラム > データ型とオブジェクト
データ型とオブジェクト
かんたんなデータについては前に説明しました。
このページでは、データ型についてより詳しいことを、オブジェクトという考え方を使って説明しましす。
データ型のおさらい
第5回 変数の型について
文字列とメソッド
文字列型のデータを1つ用意すると、いろいろと便利なことができました。
>>> abc.split(‘,’)
[‘Alpha’, ‘Beta’]
他にも、indexメソッドを使うと、引数で指定した文字が、何番目か分かります。
5
ちなみに、順番は一番最初が0番になります。
このように、文字列データを1つ用意するだけで、spllitやindexといった便利なメソッドをすぐに使うことができます。
フルーツと道具
ここにフルーツの「リンゴ」が1つあるとします。
このリンゴをどうしましょうか?
リンゴの扱いには、いろいろあります。
ナイフで普通に皮をむいて食べることもできます。
ミキサーを使ってジュースにして飲むの美味しいですね。
また、ちょっとひねった考えですが、植木鉢と土があれば種を植えて芽をださせ、リンゴの木を育てることもできます。
これらはすべて、フルーツのための道具のセットです。
普段は、「フルーツ」という言葉を聞いても実際のオレンジやリンゴしか思い浮かばいですが、ここでは、こうした道具も含めて「フルーツ」と考えます。
ちょっと変な考え方ですが、なんとか慣れて下さい。
「道具も含めてフルーツ」です。
文字列データ型を用意すると、いろいろなメソッドを使うことができました。
これを、材料としてのリンゴと、それを料理するための道具セットにも当てはめられます。
データにはそれぞれ型があったように、果物型を考えてみましょう。
文字列データの場合、実際の内容は、それぞれの使うシチュエーションによって違います。例えば、’Red’、’Blue’など、いろいろな文字列を用意できます。これは、果物型で言えば、リンゴではなくてオレンジやメロンを用意することに似ています。
果物屋さんでリンゴを買っても、ナイフやミキサーなどの道具をおまけでくれることはありません。しかし、Pythonは親切なので、データをいろいろな方法で扱う道具を用意してくれます。これが、既に習ったメソッドです。
メソッドについてはこちら
第7回 関数とメソッドを使ってみる
Pythonが用意してくれるメソッドには、必要そうなものがだいたい揃っています。。これらの道具(メソッド)を上手に使うことで、プログラムをすばやく作ることができます。
「オブジェクト」とか「オブジェクト指向」という言葉を知っていますか?
オブジェクトとは、Pythonでは、データ型と同じような意味です。
Pythonにおける型は、実際のデータとそれを処理するメソッドが一緒になっているものです。
このものがオブジェクト。
オブジェクト指向とは、このものとしてのオブジェクトを使ってプログラミングすることです。
実体を作る
データ型は、実体が無い概念だけで、実際に使うには、実体(インスタンス)を作る必要があります。
果物型の例でいうと、果物型というのは果物全体を表す概念です。
それに対し、リンゴとかオレンジなどの実物がインスタンスに当たります。
文字列型で考えてみましょう。
「文字列型」というのは概念です。それに対し、いろいろなときに実際に使う’Alpha’だとか、’Orange’、’Osaka’などの実際の文字列がインスタンス、実体です。)
あるデータ型の実体を作るには、そのデータ型を同じ名前の関数を使います。
例えば、文字列型は本当は、str型という名前でした。
第五回 変数の型について
strという名前の関数を、作りたい文字列を引数に渡して実行すると、str型のインスタンスができます。
この、データ型と同じ名前の関数が「初期化メソッド」というものです。
下の例では、できたインスタンスをmy_strという変数に代入しています。
>>> my_str = str('Nagoya') >>> print('Nagoya') Nagoya
実は、下のように書いても、同じことです。文字列型(str型)のインスタンスを用意しています。
>>> my_str = 'Nagoya' >>> print('Nagoya') Nagoya
文字列(str)、整数(int)、小数(float)などは、組み込みデータ型といいます。
初期化メソッドを使う必要がないようになっています。
date型をつかってみる
もっと高機能なオブジェクトをつかってみましょう。
Pythonには、「日付」を表すdate型というデータ型が用意されています。
datetime型を使うには、最初にこのようにimport datetimeを実行する必要があります。
>>> from datetime import *
これはモジュールのimportという操作です。詳しくは別なページで解説します。
インスタンスを作る
特定の日を表す、date型のインスタンスをつくってみましょう。
下の例では、2020年1月1日のインスタンスを作っています。
>>> day = date(2020,1,1) >>> print(day) 2020-01-11
date型のメソッド
date型は、その日が何曜日かを教えてくれるメソッド「weekday」を持っています。
このメソッドは、曜日を0から始まる数字で返します。0が月曜日、1が火曜日…と続き、6が日曜日です。
>>> day.weekday() 2
2020年1月1日の場合、2なので、水曜日という意味です。
実体がなくても使えるdate型のメソッド
date型は、実体がなくても使えるメソッドとして、todayを持っています。
>>> kyou = date.today() >>> print(kyou) 2017-10-01
date型の引き算
date型も、引き算ができ、2つの日付の差を計算できます。
先程の、2020年1月1日から、今日の日付を引いてみましょう。
>>> sa = day - kyou >>> print(sa) 822days, 0:00:00
2020年オリンピックイヤーまではあと822日でした。(もちろん、このコードを実行する日付によって日数は変わります。2020年よりあとに実行していたら、マイナスの日数かもしれません。)
データの属性
インスタンスが、属性やプロパティと呼ばれる変数を持っている場合があります。
例えば、上の例に出てきた日数の差を表す変数saは、実はtimedelta型のデータで、daysという変数(属性)を持っています。
>>> print(sa.days) 822
データ型の調べ方
ちなみに、typeという関数を使うと、インスタンスのデータ型を調べることができます。
>>> type(sa) <class 'timedelta'> >>> type(kyou) <class 'date'> >>> type(1) <class 'int'>
<< 前へ 第7回 関数とメソッドを使ってみる
>> 次へ 第9回 たくさんのデータを1つにまとめる