• WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCampPro_インタビュー
    未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20

◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

Web Camp【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。

11月11日、18日開催決定!2日間で人工知能(AI)を学習するPythonコースが開講

今回、当社(WebCamp)では、現役フリーランス・エンジニアとしてPythonの最前線で活動している講師をお招きし、2日間でPythonの基本から機械学習の基礎まで学ぶ短期集中型のコースを開講します。
Pythonの基礎プログラミング能力を身につけたい方機械学習やAIに興味はあるが学習できていない方現役Pythonエンジニアからリアルな話を聞きたい方
上記にあてはまる方は、ぜひご参加ください!

はじめに

Pythonも現在の他のメジャーな言語と同様、オブジェクト指向プログラミングを行う言語です。
オブジェクト指向は現代のプログラミング作業では必須の考え方で、Pythonに限らず覚えておく必要があります。
Pythonのプログラムにおけるデータは、全て、オブジェクトで表現されています。
文字列やリストなどさまざまありますが、すべてオブジェクトとして扱われます。

ここでは、オブジェクト指向の中でもPythonにおけるクラスについての説明を行っていきます。

オブジェクト指向のクラスという概念

まずはオブジェクト指向における「クラス」という概念、考え方を説明します。

クラスとはいわゆる「ある目的をもったものの定義」、つまり「設計図」です。
「ある料理を作りたい」といった場合に、まずは材料をどれだけ用意するかが必要になります。
そこから、どういった下ごしらえでやるか、そのためには包丁がいるのか、ミキサーがいるのか全て記す必要があります。
必要なものがすべてつまっていますが、それは設計図であり、料理そのものではありません。
つまり、クラスとは「あることを実現するための設計図」と理解して頂ければ分かりやすいと思います。

インスタンス(実体)とは

「インスタンス」とは、クラスを元に作成された実際のモノのことです。
先ほど述べた通り、クラスはあくまで『設計図』でしかありませんので、クラスだけがあっても何もできません。
実際に動作をさせるためにはそこから実際のモノを作って動作させます。
その実際のモノのことを「インスタンス」と呼びます。
例えば、車のクラスがあった場合に、クラス自体は車の設計図にしか過ぎません。
そこからインスタンスを作って、実際に車として動作させるイメージです。
ちなみに、クラスからインスタンスを作ることを「インスタンス化」といいます。

クラスの定義方法

クラス名

まず、クラスの名前を最初に定義します。
testクラスという場合は以下のように定義します。


class Test:

冒頭にclassと書いて、その後にクラス名を書きます。クラス名の先頭は大文字である必要があります。
そして最後に「:」(コロン)を付けます。

メンバ(変数)

クラス内部で使用する変数を設定します。(任意)
注意としては、クラス名を記載して改行した後、メンバやその他の設定はインデント(段落)をいれてください。
例えば、testクラスにvalという数値を入れる変数を入れる場合は以下のように定義します。


class Test:
val = 100

メソッド(関数)

メンバと同じく、インデントを入れてメソッドも定義できます。
例えば、testクラスにmsgという関数を入れる場合は以下のように定義します。


class Test:
val = 100
def msg(self):
print('This is test')

冒頭にdefと書いて、その後にメソッド名を書きます。メソッド名は先頭を大文字にはしません。
最後にはクラスを同じように「:」(コロン)を付けます。
msgの後にあるself,dataというのは、引数と呼ばれるもので、必要な情報を渡すために使います。
関数は必ず一つ以上は引数を書く必要があり、pythonでの1個目の引数は[self」と決まっていますので、どんな関数でも


メソッド名(self):

とは最低限書くことになります。決して「メソッド名():」とは書きません。

また、「print('This is test')」となっている部分が実際の関数の中身です。
クラス名の後の関数名でインデントを入れましたが、関数名の後の関数の中身を書く際もまたインデントを入れます。

クラスをインスタンス化する

先述の通り、クラスをメンバやメソッドで形成しても、そのままではプログラム実行でなにも起こりません。
インスタンス化して実行する必要があります。
先ほどまでのtestクラスを以下のように書きました。

class Test:
val = 'This is test python')

def msg(self):
print(val)

これをインスタンス化するには以下のように書きます。


test1 = Test()

test1は任意の名前です。インスタンス化した実体の名前になります。
Test()でクラスをインスタンス化しています。

メソッドの実行

インスタンス化することで、メソッドを実行することが可能になります。


test1.msg()

「インスタンス名.メソッド名(引数)」で呼び出します。
引数がない場合でも括弧は忘れないようにします。
これで、実際にプログラムを実行すると「This is test python」と表示されます。

コンストラクタ

インスタンス化(実体化)する時に自動的で実行されるメソッドをコンストラクタといいます。
コンストラクタ用のメソッドは関数名が固定で「__init__」という名前で作成します。
"_"を前後に2つになります。
以下のプログラムを例に解説します。


#coding: UTF-8

class Test2:
num = 0
def __init__(self,num):
self.num = num

def print_num(self):
print('numの値は{}です。'.format(self.num))

test2 = Test2(10)
test2.print_num()

このtestクラスをインスタンス化した場合、コンストラクタであるinit関数に基づき、引数numに設定した値がメンバ変数であるnumに格納されます。
今回は「10」を代入しています。
そしてメソッドであるprint_numを実行すると、「numの値は10です」と表示されます。

デストラクタ

デストラクタはコンストラクタとは逆のものです。
つまりインスタンス化したオブジェクトを破棄する場合に呼ばれるメソッドです。
デストラクタ用のメソッドは関数名が固定で「__del__」という名前で作成します。
"_"を前後に2つになります。
以下のプログラムを例に解説します。


#coding: UTF-8

class Test3:
def __init__(self):
print('コンストラクタを実行')

def __del__(self):
print('デストラクタを実行')

test3 = Test3()
del test3

「test3 = Test3()」でインスタンス化されますので、そのタイミングで「コンストラクタを実行」と表示されます。
「del test3」でインスタンスを破棄します。そのタイミングでdel関数が呼ばれ、「デストラクタを実行」と表示されます。

継承

クラスということでもちろん継承も可能です。
継承とは、別のクラスの持つ機能を自分自身に取り込むことです。
そうすることで、自分の機能+別クラスの機能も使用できるようになったり、別クラスのある機能を自分のクラス内で再定義し拡張したりすることもできます。
以下のようなプログラムを例に解説します。


#coding: UTF-8

class Test4:
num = 0
def __init__(self, num):
self.num = num;

def print_num(self):
print('numの値は{}です。'.format(self.num))

class Test5(Test):
def print_info(self):
print('Test5クラスはTest4クラスを継承しました。')
super().print_num()

test5 = Test5(15)
test5.print_info()

Test4は引数で渡した数値を表示する機能を持っています。
それを継承したTest5をインスタンス化します。
引数で指定した「15」はTest5でも同じようにnumに格納されます。
そしてprint_infoでは「Test5クラスはTest4クラスを継承しました。」と表示した後、「super().print_num()」と記載されています。
このsuperというのは継承元のクラスを表します。ここではTest4ということになります。
なので、「super().print_num()」とは、Test4クラスのprint_num関数を実行することになりますので、「numの値は15です。」と表示されます。

privateとpublic指定

Pythonではクラスのメンバ変数やメソッドの名前の前に"__"をつけることによりprivateにできます。
privateとはクラス内部でのみ干渉可能ということになります。
何もつけなければpublic、通常通りの動作です。
具体的にはインスタンス化した実体から「直接呼ぶことはできません」
クラス内の別のメソッドなどからは呼び出すことが出来ます。
以下のプログラムを例に解説します。

#coding: UTF-8

class Test6:
__num = 0
def __init__(self):
self.__num = 22

def print_num(self):
self.__print()

def __print(self):
print('numの値は{}です。'.format(self.__num))

test6 =Test6()
test6.print_num()
test6.__print() #ERROR!
test6.__num #ERROR!

Test6では、メンバ変数numと、メソッドprintがprivate、つまり内部のみのアクセスできる状態です。
逆にメソッドprint_numはpublicです。
そのため、print_numの呼び出しは成功しますが、printやnumをインスタンスから呼び出そうとするとエラーになります。
print_numはその中身でprintを呼ばしていますし、printはその中身でnumを呼び出していますが、クラス内部からの干渉なのでエラーにはなりません。

さいごに

Pythonのクラスについて解説いたしました。
クラスの概念はオブジェクト指向を理解されている方にとってはなじみのある内容化と思います。
文法的に多少覚えることがありますが、やはりPythonはシンプルに記載できて直感的にわかるようにできていると思います。
ご自身でクラスを作成してみて、実際にどうなるか色々試してみてください。

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

11月11日、18日開催決定!2日間で人工知能(AI)を学習するPythonコースが開講

今回、当社(WebCamp)では、現役フリーランス・エンジニアとしてPythonの最前線で活動している講師をお招きし、2日間でPythonの基本から機械学習の基礎まで学ぶ短期集中型のコースを開講します。
Pythonの基礎プログラミング能力を身につけたい方機械学習やAIに興味はあるが学習できていない方現役Pythonエンジニアからリアルな話を聞きたい方
上記にあてはまる方は、ぜひご参加ください!

8月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
7月受入枠は満員となっております。8月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

関連キーワード
学習の関連記事
  • プログラム演習は技術向上に役立つ?【脱初心者】
  • プログラミング効率を上げるエディタの選び方とオススメ
  • プログラミングコンテストの応募内容と対策方法を徹底解説
  • 【中学生・高校生向け】プログラミング初心者にオススメの言語と教室
  • 【初心者向け】プログラミングを勉強するサークル7選!
  • プログラミング習得時間はどのくらい必要なのか?

当サイトで人気のオススメ転職サービスTOP3

1位 マイナビエージェント×IT

おすすめポイント

・平日忙しい人も、土曜日開催の個別キャリア相談会に参加できる

・職種や仕事内容(要件定義、上流工程から携わる仕事など)の要望が細かくできる
・マイナビの規模を活かした豊富で幅広い求人数

マイナビエージェント×ITの登録はこちら

2位 レバテックキャリア

おすすめポイント

・求人登録数4,000件以上

・エンジニア未経験、経験者両方に対応

・有名企業の採用担当者インタビューがみれる

・一次面接NGからの内定実績もあるほど、内定率が高い

レバテックキャリアの登録はこちら

 3位 type転職エージェント

おすすめポイント

転職者の71%が年収アップ

・IT系企業、特にエンジニアに限らず営業職の求人も充実している

各職種専門の転職アドバイザーが援助

type転職エージェントの登録はこちら

おすすめの記事
Ruby
常に必要というわけではありませんが、プログラムを作る上で、日時を扱うことは少なくありません。特にビジネスで使用するプログラムであれば、必要な...