<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>インスタンス - プログラミングで遊ブログ</title>
	<atom:link href="https://lemon818.com/tag/%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9/feed/" rel="self" type="application/rss+xml" />
	<link>https://lemon818.com</link>
	<description>現役システムエンジニアが趣味でプログラミングする自由気ままなブログ</description>
	<lastBuildDate>Sat, 01 Aug 2020 14:35:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>	<item>
		<title>【Python】class とは？使い方まで初心者にもわかりやすく図で解説！</title>
		<link>https://lemon818.com/python-class/</link>
		
		<dc:creator><![CDATA[Take]]></dc:creator>
		<pubDate>Wed, 29 Jul 2020 00:20:04 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[インスタンス]]></category>
		<category><![CDATA[オブジェクト指向]]></category>
		<category><![CDATA[クラス]]></category>
		<category><![CDATA[コンストラクタ]]></category>
		<category><![CDATA[デストラクタ]]></category>
		<category><![CDATA[使い方]]></category>
		<guid isPermaLink="false">https://lemon818.com/?p=5159</guid>

					<description><![CDATA[class（クラス）って結局なんや？ どうやってつかうんや？ &#160; そう思ったことありませんか？ どーもTakeです。 &#160; この記事では、Python のclass（クラス）とは？その使い方について簡単…]]></description>
										<content:encoded><![CDATA[<div class="sc_frame_wrap solid yellow">
<div class="sc_frame ">
<div class="sc_frame_text"><strong><span style="color: #000000;">class（クラス）って結局なんや？ どうやってつかうんや？</span></strong></div>
</div>
</div>
<p>&nbsp;</p>
<p>そう思ったことありませんか？</p>
<p>どーもTakeです。</p>
<p>&nbsp;</p>
<p>この記事では、<strong>Python のclass（クラス）とは？その使い方について簡単に解説します。</strong></p>
<p>&nbsp;</p>
<p>class（クラス）というと設計図とかオブジェクト指向における概念とかいろんな表現がありますが、</p>
<p>わたしは<strong><span style="color: #ff0000;">プログラミング初心者のうちはさっぱりわかりませんでした</span></strong>。</p>
<p>&nbsp;</p>
<p>「<strong>やってくうちに何となく必要性がわかってくる</strong>」そういうものだと思います。</p>
<p>ですがclass（クラス）という考え方は初めのうちはどうしても難しいため、</p>
<p>この記事ではPython のclass（クラス）について<span style="color: #0000ff;"><strong>図をつかって簡単に解説します。</strong></span></p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">この記事でわかること！</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>Python のclass（クラス）について</li>
<li>Python のclass（クラス）の使い方</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<h2>Python のclass（クラス）について</h2>
<p>class（クラス）を説明する上で必要なキーワードが三つあります。</p>
<p>これらを順に説明します。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">３つのキーワード</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>クラス・・・設計図のこと</li>
<li>インスタンス・・・設計図をもとに実際に作ったもの</li>
<li>オブジェクト指向・・・クラスをつかって開発する手法のこと</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<h3>クラスとは？</h3>
<p>class（クラス）とはイメージは<strong>設計図</strong>と思ってください。</p>
<p>もっと簡単に言うと<strong>変数と関数をまとめたもの</strong>と思っておけばOKです。</p>
<p>&nbsp;</p>
<p>たとえば、Python で Human（人間）を作ってみようと思います。</p>
<p>Human（人間）には名前、身長、体重といった様々な<strong>要素</strong>があり、話したり歩いたりいろんな<strong>動作</strong>もあります。</p>
<p>&nbsp;</p>
<p>それをPython でHuman（人間）をクラスにしようとすれば<strong>「要素 = 変数」「動作 = メソッド」</strong>になります。</p>
<p>これら<strong>「変数」「メソッド」</strong>をまとめて定義したものが<strong>クラス</strong>です。</p>
<p>&nbsp;</p>
<p><img fetchpriority="high" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/class2.png" alt="" width="601" height="238" class="aligncenter wp-image-5173" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/class2.png 649w, https://lemon818.com/wp/wp-content/uploads/2020/07/class2-300x119.png 300w" sizes="(max-width: 601px) 100vw, 601px" /></p>
<p>&nbsp;</p>
<h3>インスタンスとは？</h3>
<p>クラスを理解する上で次に出てくる重要なキーワードが「<strong>インスタンス</strong>」です。</p>
<p>「インスタンス」とはクラス（設計図）として宣言したときの実体化させたもの</p>
<p>（<strong>設計図をもとに実際に作ったもの</strong>）のことです。</p>
<p>&nbsp;</p>
<p>「Human（人間）クラスをつくりました！じゃあソースコードで呼び出して使うで！」ってなったとき</p>
<p>どう呼び出すか？って考えてください。</p>
<p>&nbsp;</p>
<p>おそらく「tanaka = Human()」という風に書くことになります。その「tanaka」っていうものが「<strong>インスタンス</strong>」です。</p>
<p>つまりクラスというのはあくまで「設計図」であり、その<strong>設計図をもとに実際に作ったもの</strong>がインスタンスです。</p>
<p>&nbsp;</p>
<p><img decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/class3.png" alt="" width="558" height="485" class="aligncenter wp-image-5176" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/class3.png 683w, https://lemon818.com/wp/wp-content/uploads/2020/07/class3-300x261.png 300w" sizes="(max-width: 558px) 100vw, 558px" /></p>
<p>&nbsp;</p>
<h3>オブジェクト指向とは？</h3>
<p>また class（クラス）を学んでいくと「<strong>オブジェクト指向</strong>」という言葉がでてきます。</p>
<p>「<strong>オブジェクト指向</strong>」とは <strong>class（クラス）をつかって開発していくプログラミング手法</strong>のことです。</p>
<p>&nbsp;</p>
<h2>Python のclass（クラス）の使い方</h2>
<p>では プログラミングで Human（人間）クラスを作ってみようと思います。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">Human（人間）クラスの構成</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>名前 ・・・ 変数 name として定義する予定</li>
<li>身長 ・・・ 変数 height として定義する予定</li>
<li>体重 ・・・ 変数 weight として定義する予定</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>この構成で Human クラスを定義します。</p>
<p>下記のように Human クラスは def で定義されるメソッド（関数）と変数（name、height、weight）で構成されてます。</p><pre class="crayon-plain-tag"># クラスの定義
class Human:
    
    def __init__(self,name,height,weight):
        self.name = name
        self.height = height
        self.weight = weight</pre><p>
&nbsp;</p>
<p>※「__init__」はいったん無視してください。あとで説明します。</p>
<p>クラスとはこのように<strong>変数と関数をまとめた設計図</strong>だと理解すれば最初はOKです。</p>
<p><img decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/class0.png" alt="" width="451" height="341" class="aligncenter wp-image-5172" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/class0.png 568w, https://lemon818.com/wp/wp-content/uploads/2020/07/class0-300x227.png 300w" sizes="(max-width: 451px) 100vw, 451px" /></p>
<p>&nbsp;</p>
<p>ではこの Human（人間）クラスから「田中（tanaka）さん」を作ろうと思います。</p>
<p>下記ソースコードの一番下で「tanaka = Human("tanaka",170,50)」とあります。</p>
<p>この tanaka は Human クラスで定義したもので<strong>インスタンス</strong>といいます。</p><pre class="crayon-plain-tag"># クラスの定義
class Human:
    
    def __init__(self,name,height,weight):
        self.name = name
        self.height = height
        self.weight = weight

# 実行部分         
tanaka = Human("tanaka",170,50)</pre><p>
&nbsp;</p>
<p>この tanaka を宣言した際、Human クラスで「__init__」が呼び出されます。</p>
<p>この「__init__」をコンストラクタと呼びます。</p>
<p><strong>コンストラクタ</strong>とはクラスを呼ば出した際（つまりインスタンスが定義されたとき）に</p>
<p>最初に呼ばれるメソッド（関数）のことです。</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" src="https://lemon818.com/wp/wp-content/uploads/2020/07/class1.png" alt="" width="621" height="280" class="aligncenter wp-image-5171" srcset="https://lemon818.com/wp/wp-content/uploads/2020/07/class1.png 813w, https://lemon818.com/wp/wp-content/uploads/2020/07/class1-300x135.png 300w, https://lemon818.com/wp/wp-content/uploads/2020/07/class1-768x347.png 768w" sizes="auto, (max-width: 621px) 100vw, 621px" /></p>
<p>&nbsp;</p>
<p>そして「__init__」コンストラクタには引数（self, name, height, weight）があります。</p>
<p>「tanaka = Human("tanaka",170,50)」と宣言したため、name = "tanaka"、 height = 170、weight = 50 と値が代入されます。</p>
<p>&nbsp;</p>
<p>ここで「<span style="color: #ff0000;"><strong>あれ？ self は？</strong></span>」となると思います。</p>
<p>「self」はインスタンス自身を意味する慣用語であり、そのメソッド内でクラスの変数を使用する場合に呼び出しが</p>
<p>必要であるため記述されており、<strong>引数ではありません。</strong></p>
<p>&nbsp;</p>
<p>もっと簡単に言うとクラスには「name, height, weight」という3つの変数があり、</p>
<p><span style="color: #0000ff;"><strong><span style="color: #000000;">「self」は</span>それら変数を呼び出すために必要なだけ</strong></span>です。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">ここまでのまとめ</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>クラス・・・設計図のこと、<strong>変数と関数をまとめたもの</strong>（Human クラス）</li>
<li>インスタンス・・・クラスを呼び出したもの（tanaka = Human("tanaka",170,50)）</li>
<li>コンストラクタ・・・クラスを呼び出した時に最初に処理するメソッド（「__init__」関数）</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>※ コンストラクタの逆に「<strong>デストラクタ</strong>」も存在します。</p>
<p>これはインスタンスが破棄されたタイミングで呼び出される処理のことです。</p>
<p>&nbsp;</p>
<h3>クラスの変数とメソッドの呼び出し</h3>
<p>クラスで定義した変数とメソッドの呼び出し方法です。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">変数とメソッドの呼び出し方法</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>変数・・・インスタンス名.変数</li>
<li>メソッド・・・インスタンス名.メソッド</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>具体的にソースコードで説明します。</p>
<p>先程と同様 Human クラス内にある変数とメソッドを呼び出します。</p><pre class="crayon-plain-tag"># クラスの定義
class Human:
    
    def __init__(self,name,height,weight):
        self.name = name
        self.height = height
        self.weight = weight
        
    def hello(self,):
        print("おはよう")
 
# 実行部分       
tanaka = Human("tanaka",170,50)
print(tanaka.name)
tanaka.hello()

## 実行結果
tanaka
おはよう</pre><p>
&nbsp;</p>
<p>上記ソースコードで「#実行部分」を確認してください。</p>
<p>まず定義した Human クラスのインスタンスである tanaka を定義します。</p>
<p>その際に引数に Human("tanaka",170,50)とすることで name = "tanaka"、 height = 170、weight = 50 と値が代入されます。</p>
<p>&nbsp;</p>
<p>そして「tanaka.name」とすることでクラス内の変数 name = "tanaka" を呼び出しできます。</p>
<p>最後に「tanaka.hello()」と呼び出すことでクラス内のメソッド hello の処理が実行され「hello」と表示されます。</p>
<p>&nbsp;</p>
<h2>最後に</h2>
<p>いかがでしたでしょうか？</p>
<p>この記事では、Python のclass（クラス）の使い方について解説しました。</p>
<p>&nbsp;</p>
<div class="sc_frame_wrap block blue">
<div class="sc_frame_title">これだけ抑えとけばOK！</div>
<div class="sc_frame ">
<div class="sc_frame_text">
<div class="sc_designlist ol square solid blue">
<ol>
<li>クラス・・・設計図のこと</li>
<li>インスタンス・・・設計図をもとに実際に作ったもの</li>
<li>オブジェクト指向・・・クラスをつかって開発する手法のこと</li>
<li>コンストラクタ・・・インスタンスが定義されたときに呼び出される処理</li>
<li>デストラクタ・・・インスタンスが破棄されたときに呼び出される処理</li>
</ol>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p>クラスを学び際はとりあえず<span style="color: #0000ff;"><strong>上記5つのカタカナを理解する必要があります。</strong></span></p>
<p>私も最初はまったくわからなかったですが、いろいろと開発していくうちに覚えました！</p>
<p>&nbsp;</p>
<p>ぜひいろいろなクラスをつくってクラスをマスターしていただければと思います。</p>
<p>ではでは。</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
