Pythonの全てを1時間で学習できる入門講座です。初心者向け・フル字幕👍コメント欄で質問OK👍世界一わかりやすいPython入門パーフェクトガイドです!
✅目次
00:00 Python入門講座〜イントロ
1:03 Pythonとは
1:32 Pythonで出来ること
1:52 Pythonの活用事例
2:07 Python入門講座 第2章〜環境構築(Pythonの開発環境構築 Mac/Windows対応)
6:22 Python入門者へアドバイス
7:41 Python入門講座 第3章〜 文字列と数値
9:43 文字列
10:07 コメント
11:26 数値
11:42 四則演算
12:18 Python入門講座 第4章〜環境変数
18:58 Python入門講座 第5章〜環境条件分岐(if文)
22:23 bool型(True/False)
22:47 比較演算子
32:30 Python入門講座 第6章〜配列とループ
35:00 辞書(連想配列)
37:23 タプル
38:52 ループ処理(for文)
46:18 Python入門講座 第7章〜メソッド
52:16 モジュール
53:23 ライブラリ
58:06 Python入門講座 第8章〜例外処理(Exception)
1:01:43 Python入門講座 第9章〜クラス
1:09:30 定数
1:10:04 継承
1:11:43 オーバーライド
1:12:52 Python入門講座〜アウトロ
✅学びをブログに書いて学習効果を高めよう!
「IT Engine」〜 エンジニアのための無料ブログ
https://it-engine.tech/users/engineer_new
🎁メンバーシップのご案内
「メンバーになる」ボタンを押して、メンバーシップに入会しよう!
https://www.youtube.com/channel/UCnEEa-IbWQ8_b-dqBgNNu4Q?view_as=subscriber
🎁メンバーシップ特典の解説動画
✅フリーランス無料カウンセリングはこちら
個別に無料カウンセリングを行い、あなたのスキルに見合ったITエンジニアのフリーランス案件(SES)をご紹介致します。
フリーランスに興味があるけれど不安・・という方は、ご相談にのります。
まだ会社を辞めてフリーランスになると決めたわけじゃないけれど、とりあえず自分がどれだけ通用するのか相談してみたい..という方も大歓迎です。まずはお気軽にご相談ください🙂
✅動画で紹介したもの
Paiza.io(Pythonの実行環境)
https://paiza.io/ja
Pythonのエディタ(PyCharm)
https://www.jetbrains.com/ja-jp/pycharm/
✅関連動画
━━━━━━━━━
プログラマー養成講座💪未経験でもプログラマーに転職できる!【目指せ年収1000万円】
https://www.youtube.com/channel/UCnEEa-IbWQ8_b-dqBgNNu4Q?view_as=subscriber
Python超入門コース 合併版|Pythonの超基本的な部分をたった1時間で学べます【プログラミング初心者向け入門講座】
✅Python入門講座 ガイド
Python入門講座へようこそ!
この動画は「世界一わかりやすいPyton入門」をコンセプトに、
初心者でも1時間でPythonが学べるチュートリアル形式の入門講座です。
Pythonは習得の難易度が低いため、
初心者のプログラミング入門としてオススメの言語です。
また、Pythonは人工知能(AI)の開発が出来るなど、
言語としての将来性も高いので、熟練プログラマーにもおすすめです!
このPython入門講座は、そんなPythonを世界一わかりやすく解説した動画です!
Pythonは文法がシンプルなので、プログラミング入門に向いているのですが、
その一方で、
・タプルと配列がややこしい
・クラスメソッド引数のselfがわかりづらい
など、Python独自の、書き方のクセがあります。
そんな分かりづらいポイントも、
このPython入門講座さえ見れば、バッチリ分かる内容になっています!
使用楽曲
https://it-engine.tech/blogs/26
#未経験から年収1000万円を目指すプログラマー養成講座 #Python入門 #Python
python入門講座へようこそ
プログラマーのせお丸です
この動画はこれから
pythonを勉強してみたいという
初心者の方に向けて
Pythonのすべてを分かりやすく解説した
入門講座です
でもPythonて難しいんですよね?
と思っている方ご安心ください
Pythonは初心者向けのプログラミング言語なので
中学生でも覚えることができます
そしてあなたも
この動画をきちんと最後まで見ていただければ
1時間後にはPythonが書けるようになっていますので
そんな1時間後の未来を手に入れるためにも
ぜひ最後まで動画をご覧ください
またご質問などはyoutubeの
コメント欄へ書き込みをお願いします
なおこのチャンネルでは
未経験から年収1千万円を目指すプログラマー養成講座
を配信していますので
是非チャンネル登録をして
他の動画も覗いてみてください
それではpython入門講座スタートです
Pythonはプログラミング言語のひとつです
初心者でも覚えやすく使いやすいのが特徴です
そんなPythonは世界中で人気があり
2020年の世界言語ランキングでは第二位
そして高収入な言語ランキングでも第二位でした
Pythonは将来性もすごく高い言語ですので
今最もオススメなプログラミング言語です
それではpythonで何が出来るのかを見ていきましょう
Pythonと言えば有名なのがAIつまり
人工知能の開発をすることができます
その他にもwebアプリを作ったり
スマホアプリを作ったり
あとはゲーム開発なんかもできちゃいます
実は皆さんが普段使っている
こんなサービスもPythonでできています
youtubeや
インスタグラムそして
あのgoogleマップも
実は裏ではpythonで作られています
pythonが使えるようになると
いろんなことができそうですね
それではここからは
実際にpythonのコードを書いていきましょう
そのためには、まずPythonのコードを書いて
実行するための環境が必要になります
そこで今回はPaiza.ioというサイトを紹介します
こちらのサイトがPaiza.ioというサイトです
このサイトを使うと
面倒なインストールなどを一切しなくても
すぐにpythonが実行できる環境が整っています
このサイトのurlは
概要欄に貼っておきますので
皆さんも一緒に行ってみてください
それでは実際にやってみます
まずは動画の概要欄のurlから
こちらのPaiza.ioを開きましょう
そしてコードの作成を試してみるという
こちらのボタンをクリックします
するとこのような画面になります
左上のこちらのボタンをクリック
すると、いろんな言語が切り替えられるようになっています
今回はpython3というのを選びましょう
たったこれだけでpythonを実行する環境が出来上がりました
使い方を説明していきます
この黒い画面の部分にpythonのコードを書きます
そしてこちらの下の実行ボタンを押すと
pythonのコードを実行した結果が表示されます
それでは実際にやってみます
まずはこちらの黒い画面に
このように書いてみましょう
まずはprintと書きます
そしてこのようにカッコ記号で囲います
カッコの中はタプルクォーテーションで囲い
“こんにちは”という文字を書きます
それではこのプログラムを書いて実行ボタンを押してみると
ここに”こんにちは”と表示されました
pythonでは
このようにprint(“こんにちは”)と書くと
“こんにちは”という文字を出力する
というプログラムになります
なおプログラミングの世界では
このプログラムのことを
ソースコードと呼びます
そしてこちらの実行した結果のことを
出力と呼びます
このようにPythonを実行するには環境が必要になります
まずはPythonに触れてみたいという方は
先ほど紹介したこちらのPaiza.IOで良いかと思います
そして一通りpythonを勉強して
いよいよ本格的に開発を進めるフェーズになったら
自分のパソコン上でpythonが実行できるような
環境を作りましょう
その時に準備するものは二つです
まず一つは、Pythonを自分のパソコンに
インストールする必要があります
これはmacとwindowsで
インストール方法がそれぞれ違うので
それぞれのやり方をこの動画の概要欄に貼っておきますが
まだ動画を止めずにこのまま見てください
そして自分のパソコン上で開発をするには
コードを書くためのエディタも必要になります
無料でおすすめのエディタは
こちらのPycharmというエディタです
こちらがPycharmの公式サイトです
このサイトのurlは概要欄に貼っときます
そしてPycharmには有料版と無料版があります
皆さんは無料版をダウンロードして使いましょう
ダウンロード方法は
こちらのダウンロードというボタンを押します
するとこのように
プロフェッショナル版とコミュニティ版
というのがあります
こちらのコミュニティ版というのが
無料で使える方なので
こちらをダウンロードしてください
本格的に自分のパソコン上で開発をする時は
pythonのインストールと
エディタのインストールが必要になります
ですが、まずは練習用ということであれば
こちらのPaiza.IOで
お手軽に始める方をお勧めします
これでいよいよPythonを書く準備が整いました
それではここからは
実際にpythonを書いていきましょう
私はこちらの本格的な環境の方で
コードを書きながら解説していきますので
皆さんが使うPaiza.IOとは
見た目が違うかもしれませんが
どちらの環境でコードを書いても
結果は一緒になりますのでご安心下さい
それでは一緒にpythonを書いていきましょう
それではpythonの書き方を解説していきたいのですが
ここで皆さんにお願いがあります
この動画は1時間でpythonを覚えられます
というコンセプトで
初心者向けに出来るだけわかりやすく解説していますが
実際にPythonが身につくかどうかは皆さん次第です
せっかく皆さんはpythonが書けるようになりたいと思って
この動画を見て頂いていますので
私から皆さんへふたつアドバイスがあります
そのアドバイスはこの二つです
一つはこの動画を最後まで見ることです
そしてもう一つは動画を見るだけではなくて
体験をすることです
体験をするというのは
どういうことかというと
ただなんとなくyoutubeを見ているだけではなくて
一緒にこの動画のコードを真似しながら
プログラミングをした方が
しっかりとPythonが身につきます
またコード書くだけではなくて
動画を見ながら学んだ重要なポイントは
ブログにまとめておきましょう
このチャンネルでは
IT Engineという無料のブログサービスを
提供していますので
このIT Engineで重要なポイントをメモしながら
この動画をご覧いただければと思います
こちらの二つのアドバイスは
めちゃくちゃ重要ですので
ここで一旦動画を止めて
準備することをお勧めします
それではいよいよ
Pythonの書き方を学んでいきましょう
それではここからは
pythonの書き方を解説していきます
まずはpythonを書くためのファイルを作ります
Paizaの環境選択した人は
ファイルを作らなくても
この黒いところに
pythonのコードを書いていけばいいだけなので
ファイルを作るという手順は不要ですが
一応覚えておいてください
まずはエディタを開いて
新規ファイルの作成を行います
こちらのPycharmというエディタで
新規ファイルを作成する場合は
こちらで右クリックをして
そしてpythonファイルというところを選びます
そしてファイル名として
今回はsample.pyというファイルを作ります
このようにpythonでは.pyという
拡張子のファイルを作ります
それではエディタに、print(“こんにちは”)
と書いて実行してみましょう
pythonのプログラムを実行するときは
ターミナルを開いてこのように書きます
pythonと書いてその後にファイル名を指定します
これでエンターを押すと
このようにpythonのプログラムが実行されました
なおターミナルというのは
プログラマーがよく使っている
この黒い画面のことです
ターミナルをまだ使ったことがない方は
過去動画の方で解説していますので
まずはこちらの動画をご覧ください
こちらの過去動画のurlは
概要欄に貼っておきます
pythonのバージョンが古い場合は
こんなエラーが出ることがあります
syntax_errorで
Non Ascii Character
なんちゃらと書かれた
こんな感じのエラーが出ることがあります
これは文字コードを指定してくださいね
という意味のエラーになります
もしこのエラーが出てしまった時は
プログラムの先頭にこの1行を付け足します
これでこのファイルの文字コードはutfですよー
という宣言になります
これはpythonのバージョンが古い場合の話ですので
頭の片隅にでも覚えておけば大丈夫です
先ほど出力した”こんにちは”という文字は
pythonでは文字列と呼びます
文字列は半角のダブルクォーテーションか
シングルクォーテーションで囲みます
クォーテーションで囲まずに文字を出力した場合は
エラーが発生しますので
必ずクォーテーションで囲むようにしましょう
コメントとは
ソースコードの中にメモ書きができる機能です
コメントの書き方は
先頭に半角のシャープをつけるだけです
こちらの例でいうと
この茶色になっている部分がコメントです
コメント1のように
1行まるまるコメントにすることもできますし
こちらのコメント2のように
行の末尾にコメントを入れることもできます
この茶色になっているコメント部分は
プログラムの実行時には無視されます
ですのでこのコードを実行すると
こんにちは という文字が出力されるだけです
皆さんもここで一旦動画を止めて
このサンプルのようにコメントを書いて
実行してみてください
コメントが複数行にまたがる場合は
このように書きます
クォーテーション三つで囲まれた部分は
その全体がコメントになります
この三つのクォーテーションは
シングルコーテーションでも
ダブルクォーテーションでもどちらでも構いません
文字列はプラス記号を使うと連結することができます
例えばこのように
“python”という文字と”入門”という文字を
プラス記号連結します
これを実行すると
“python入門”という文字が出力されます
pythonでは
文字列の他に数値を扱うこともできます
数字にクォーテーションをつけずに
このように書くと
文字列ではなく数値として扱われます
こちらは文字列
こちらは数値です
数値を使うといろんな計算を行うことができます
例えば
プラス記号を使った場合は足し算になりますし
マイナス記号を使った場合は引き算になります
なお掛け算の場合はアスタリスク記号
割り算の場合はスラッシュ記号となります
これらの記号はすべて半角なので注意をしてください
またこちらのように
複数を組み合わせて計算をすることもできます
それでは皆さんも実際にコード書いて
いろんな計算を実行してみてください
変数とは値を入れておく箱のようなものです
変数は”変数名=値”で定義をします
それでは実際のコードを見ながら解説をしていきます
変数を使うには
まず初めに変数を定義する必要があります
それをやっているのが
この一行目のコードです
tmp=python入門と書いていますが
これはtmpという名前の変数に
python入門という値を代入する
という意味になります
代入とはどういうことかというと
tmpというこの箱の中に
python入門という文字列を入れました
という意味です
そして次の行でprint(tmp)と実行すると
python入門と出力されます
どうしてこうなるのかと言うと
tmpという変数
つまりこの箱の中には
python入門という文字列が入っていますので
このコードを実行すると箱の中身が取り出されて
Python入門という値が出力されるわけです
このように値を入れておく箱のことを
変数と言います
変数を定義するときには
“変数名=値”形式で書きます
変数についていくつか補足です
変数に代入する値は
文字でも数値でも何でもオッケーです
ですのでこのように
数値を代入しても構いません
次の注意点としては
変数名はクォーテーションで囲ってはいけません
これだとエラーになってしまいます
次に変数名はどんな名前をつけてもOKです
例えばtmpではなくfooのような別の名前でもOKです
ただし変数名に使える文字は
半角の英数字とアンダーバーのみです
ここに書いてありますが
半角の英数字とアンダーバーしか使えないので
注意をしましょう
このようにfoo_12のような名前はOKです
ただし先頭に数字を持ってくることはできません
この場合だとエラーになってしまいます
プログラムは上から順番に実行されます
ですので変数を定義する前に
このようにその変数を使おうとすると
エラーが発生しますので注意をしましょう
変数を使うとこんなことも出来るようになります
一つ目は数値の計算です
aという変数には数値の1を代入して
bという変数には数値のにを代入します
そしてa+bを実行すると
3という結果が返ってきます
もう一つは文字の連結です
aという変数には
pythonという文字列を代入して
bという変数には
入門という文字列を代入します
そしてa+bを実行すると
文字列同士の連結になりますので
今度はPython入門という結果が返ってきます
なお変数は上書きすることができます
それはコード見てきましょう
1行目では
変数にpythonという文字列が代入されます
そして2行目では
変数にpython入門という文字列が
代入されることで
ここで上書きが発生します
その結果この3行目を実行すると
結果はpython入門という
こちらの上書きされた結果が返ってきます
このように変数は
後から上書きすることができます
また変数の値が数値の場合も
同様に上書きをすることができます
数値の場合は
このように自分自身に1を足す
なんていう書き方もできます
解説するとまず
一行目では変数iに1が代入されます
そして2行目で
1+1の計算結果が変数に代入されます
その結果最後の行では2
という結果が返ってきます
なおこの計算の書き方には基本形と
省略形があります
こちらの左側が基本形
そしてその省略形がこの右側の書き方です
i+1という書き方は省略すると
このように書くことができます
こちらの省略形の書き方と
こちらの基本形の書き方は
どちらも同じ意味になります
変数は繰り返し使うことができます
つまり変数から値を取り出しても
値はそのまま残り続けます
実際のコードを見ていきましょう
まずは1行目で
programという変数に
pythonという文字を代入します
そして次の行を実行すると
python入門と出力されます
最後の行を実行すると
python講座と出力されます
このように変数の値は
何度使っても消えることはないので
繰り返し使うことができます
文字列に変数を埋め込む方法を紹介します
まずはクォーテーションの手前にfをつけます
そして波括弧の変数とこのように書くことで
文字列の中に変数を埋め込むことができます
それでは実際のコードを見ていきましょう
1行目では
変数iに数値を代入しています
2行目では
変数xに文字列を代入しています
そしてこのように文字列に変数を埋め込みます
まずはクォーテーションの手前に
このようにfと書きます
そして波括弧を使って
このように文字列の中に変数を埋め込んでいきます
これを実行すると
第1回python入門と出力されます
このように文字列の中には
変数を埋め込むことができます
これを変数展開と言います
注意点としてはクォーテーションの手前に
fをつけることを忘れないでください
この書き方はpythonのバージョンが
新しくないと通用しません
古いバージョンのpythonでこの書き方をすると
エラーになりますので
頭の片隅に覚えておきましょう
Pycharmという
エディタのデバッグ機能を使うと
値の解析を行うことができます
それが実際にやってみましょう
まず始めにこのようなコードを準備しました
そしてこの4行目のこの手前のスペースの部分
ここをクリックすると
このように背景が赤くなります
この状態でプログラムのファイル名を右クリックして
デバッグというところを実行します
するとこのように
先ほど指定した赤いところで
プログラムの実行が止まって何やら
このような画面が出てきました
この画面はプログラムを解析するための画面です
それではこれを使って
プログラムの解析を行っていきましょう
まずは変数xですが
str1と書いてあります
このstrというのは
文字列ですよーという意味になります
つまり、変数xは文字列の1です
という解析結果が
ここに表示されているわけです
次に変数yを見て行きます
こちらはint1と書かれています
intとはどういうことかと言うと
英語で数値を表しています
つまりこれは数値の1ですよ
という解析結果が表示されているわけです
このようにPycharmでは
デバッグ機能を使うと
値の解析を行うことができます
なおこのように
プログラムを途中で止めて
解析を行うことをブレークポイントといいます
値には数値や文字列のように
いくつかの種類があります
このような値の種類のことを型と言います
数値はint型
文字列はstr形となります
型は難しく考える必要はありません
int型というのは単純に数値のことです
str型というのは単純に文字列のことです
Pythonには数値や文字列の他にも
いくつかの型がありますが
それはこの後紹介していきます
pythonでは
二つの値が等しいかどうかを
比較することができます
比較を行うときはイコール記号を二つ使います
そして比較結果が正しい場合はTrue
正しくない場合はFalseという結果が返ってきます
それでは実際のコードを見ていきましょう
1行目のコードでは
左側の1という数字と右側の1という数字が
同じかどうかをチェックしています
この場合二つの値は同じなので
Trueという結果が返ってきます
2行目のコードでは
1という数字と2という数字が
同じかどうかチェックしています
この場合二つの値は等しくないので
Falseという結果が返ってきます
このように二つの値が等しいかどうかを
チェックするときは
イコール記号を二つ使います
イコール記号がひとつだけだと
代入になってしまうので
間違わないように注意して下さい
そして比較結果が正しい場合はTrue
正しくない場合はFalseが返ってきます
なおこの比較式の部分を
プログラミングの世界では条件式呼びます
比較結果のTrue Falseのことを
プログラミングの世界ではbool型と呼びます
bool型は比較結果なので
必ずTrueかFalseのどちらかになります
それ以外の結果になることはありえません
なおpythonでは
True Falseの先頭は
このように大文字になりますので
注意してください
比較には他にもいろんな種類があります
いずれもその条件式が正しければTrue
正しくなければFalseが返ってきます
例えばこのように
小なりbと書くと
aよりbが大きいかどうかの比較になります
正しければTrue
正しくなければFalseが返ってきます
また3行目のコードのように
小なりの後にイコール記号を付け足すと
aはb以上かという比較式になります
次に4行目5行目のように
小なり記号ではなくて
大なり記号を使った場合は
aよりbが小さいかどうかといった判定になります
最後の行は
aとbが異なる場合にTrueを返します
実際にどんな結果が返ってくるか
皆さんもコード書きながら色々と試してみてください
それでは問題です
これらの条件式はどんな返ってくるでしょうか
一つずつ見ていきましょう
まずは1問目ですが
これは1と2が等しいかどうかの条件式になります
これは正しくないので
結果はFalseが返ってきます
次の2問目は1より2が大きいか
という条件式です
結果はTrueです
3問目は
1は1以上かという条件式です
結果はTrueです
最後の4問目は
1は2より大きいかという条件式です
結果はFalseです
比較を行う際の注意点です
Pythonでは
基本的に形が違うものを比較すると
Falseが返ってきます
例えば数値の1と文字列の1を比較した時は
結果はFalseとなります
ただし例外として
整数と総数は比較することができます
例えば整数の1と小数の1を比較した場合は
結果はTrueとなります
if文を使うと
条件式の結果によって
処理を分岐させることができます
if文の書き方はこちらです
ifの後に条件式とコロンを書きます
そして次の行に半角スペースを四つ書きます
これをインデントと呼びます
Pythonでif文を書くときには
この場所に半角スペース四つの
インデントを入れないと
エラーになってしまいますので注意しましょう
そしてインデントの後ろに
条件式がTrueだった場合の処理を書きます
これがpythonでのif文の書き方になります
それはif文を使った
実際のコードを見ていきましょう
このコードは
scoreが80点以上だったら”合格点です”と
表示されるプログラムです
ifの後ろの条件式の部分には
scoreが80以上という条件式が設定されています
そしてこの条件式がTrueだった場合
こちらの処理が実行されます
今回の場合だと
合格点です という文字が出力されます
では1行目のこちらの変数scoreに
70を代入したらどうなるでしょうか
その場合はこの条件式が
Falseになりますので
このifの中身は実行されません
つまり何も表示されません
処理の流れとしてはこんなイメージになります
プログラミングは
上から下に向かって
順番に処理が行われていきます
ですので、この条件式がTrueだった場合は
123と表示されます
この条件式がFalseだった場合は
この行は実行されませんので
その場合は1と3だけが表示されます
if文の中にelseという文を入れると
Falseの場合の処理も書くことができます
それでは実際のコードを見て行きましょう
今度はif文の中にelse
という文が含まれています
すると条件式がFalseだった場合の処理を
ここに書くことができます
注意点としてはelseの後にも
このようにコロンを入れましょう
またifとelseの縦の位置は
必ず揃えるようにしてください
例えばこちらの右側のような感じで
ifとelseの位置が揃ってない場合は
エラーになりますので注意をしましょう
Pythonのインデントについて
もう少し補足をします
インデントとは
半角スペース四つのことでした
pythonでは
このインデントが意味を持っています
それではこちらのコードをご覧ください
一つ目のprint部分は
条件式がTrueのときに実行されます
何故かと言うとインデントによって
このifのブロックの中に
入っているからです
次に二つ目と三つ目のこちらのprint文ですが
このふたつはインデントによって
elseのブロックの中に入っています
ですので条件式がFalseだった場合に実行されます
それでは最後のこのprint文は
どうなるでしょうか
これはインデントが付いていませんので
縦の位置関係で見ると
if elseと同じライン上にいます
ですのでこの最後のprint文は
if else文の外にいることになります
つまりif elseは
ここからここまでになりますので
最後のこのprint文は
if elseの処理が終わってから
必ず実行されます
このようにpythonでは
インデントが意味を持っていますので
覚えておきましょう
elif文を使うと
さらに条件を増やすことができます
elif文とはitとelseの間に
さらに条件を追加したい時に使う文です
他のプログラミング言語では
elseif文なんて言い方をしたりもしますが
pythonではelif文を使います
それでは、このelif文の使い方を見ていきましょう
elif文はifとelseの間に
さらに条件を追加したい時に使う文です
今回はelif score>=70
という条件をつけさせてみました
それではこのコードが
どういう動きになるのかを見ていきましょう
まずはscoreが80以上の場合は
合格点ですと表示されます
scoreが70点から79点の場合は
elif文の条件式がTrueになりますので
惜しい と表示されます
scoreがそれ以外
つまり69点以下の場合は
elseになりますので、不合格です
と表示されます
注意点としては
scoreが80点以上の場合
ifの条件式もelifの条件式も
どちらも満たすことになりますが
elif文の中身は実行されません
elifというのは
あくまで上の条件を満たさなければ
次はこちらの条件も試してね
という文なので
elifよりも上の方で
何らかの条件式を満たした場合は
その時点で終了となります
条件式はいくつかを組み合わせることもできます
条件式を組み合わせる場合はand使います
こちらのコードをご覧ください
このように書くと
全ての条件式がTrueだったらTrue
それ以外はFalseという意味になります
ですので左側のこの条件式がTrueかつ
右側のこの条件式もTrueだった時に
初めてTrueが返ります
どちらか一方でも
Falseだったらその瞬間にFalseが確定します
このような式のことをand条件と呼びます
条件の組み合わせにはもう一つ、
OR条件というものがあります
コードの描き方はandではなくorを使いますが
or条件の場合は複数の式のうち
どれか一つでもTrueだったらTrueを返します
つまりFalseが返ってくるのは
全ての条件が全滅でFalseだった場合のみです
notを使うと
TrueとFalseを逆転させることができます
こちらの例を見てください
このように条件の前にnotを付け足すことで
TrueとFalseが逆転します
ですのでこの場合
xがFalseだったら
こちらの方が実行されて
xがTrueだったら
こちらのelseの中身が実行されます
それではここまでのまとめとして実際に
コード触って遊んでみましょう
私が書いてみたサンプルはこちらです
if elseを使った条件式や
and条件を使った条件の組み合わせ
などが使われています
ちなみにこちらに注目してください
if文やelse文の中に何も書くことがないときは
passというものを使います
それとこのコード中では
さらっとif文の中に
またif文を書いたりもしています
このようにif文の中に
さらにif文が入っている状態を
プログラミングの世界ではネストと呼びます
複数の値をまとめたものをリストと言います
リストは配列とも呼ばれます
この講座では配列という呼び方で解説を進めていきます
配列を使う時は
このように半角のブラケット記号を使います
ブラケット記号というのは
このように角のあるカッコ記号です
これで中身のない空の配列となります
配列の中には
,区切りで複数の値を入れることができます
例えばこのようにPHP,Rubyと書くと
この一つの配列の中に
PHP rubyという
文字列が格納された状態になります
同様に数値も配列の中に入れることができます
また、こちらの例のように
文字列型と数値型などを混在させてもOKです
なお配列は数に上限などはありませんので
配列には好きなだけ値を入れることができます
配列は先頭から順番に0から始まる番号が
自動的に割り当てされます
この番号のことをインデクスと呼びます
このコードの場合
先頭の値はPHPですので
ここにインデクス番号0番が自動的に割り当てされます
その次のRubyはインデクス番号1番
その次のPythonはインデクス番号2番となります
次にこの配列の値を
一つだけ取り出してみましょう
この配列はarrという名前の変数に代入しておきます
そして配列から値を取り出すときは
このようにインデクス番号を指定します
arrの0番を指定すると
PHPという文字が返ってきます
なぜかと言うと
インデクス番号0番はPHPだからです
同様にインデクス1番を指定するとruby
インデクス2番を指定すると
pythonという文字が返ってきます
なお配列に格納した一つ一つの値の事を
要素と呼びます
また配列から値を取り出しても
配列の中身は変わりません
つまりこのように配列の要素を取り出しても
この配列はこの三つの文字列が
格納されたままの状態となります
さて配列はインデクス番号を指定して
要素を取り出すという解説をしましたが
インデクス番号って覚えづらいですよね
配列の何番目に
何の値が入ってるかなんて
覚えていられません
そういう時は配列ではなく連想配列を使います
なおpythonでは
この連想配列の事を辞書と呼びます
辞書と連想配列は同じ意味です
他のプログラミング言語では
連想配列と呼ぶことが多いので
この講座では
連想配列という呼び方で説明を進めていきます
連想配列は配列と非常によく似ています
ですがインデクス番号で管理するのではなく
一つ一つの要素に
好きな名前をつけることができます
例えば配列にpython ruby
という文字列を格納するときは
こんな書き方をしましたが
連想配列の場合はこんな書き方をします
まずはpythonという値に対して
好きな名前をつけることができます
今回はkey1という名前をつけました
このコードのようにコロン記号を使うと
この値に対しての名前はこれだよ
という指定になります
同様にRubyという要素に対しては
key2という名前をつけました
そして値を取り出すときには
このように名前を指定して値を取り出します
key1という名前を指定して値を取り出すと
pythonという結果が返ってきます
このように配列では
インデクス番号で管理をしていましたが
連想配列では要素を一つ一つに
好きな名前をつけて
その名前を指定して取り出します
これが連想配列です
なお連想配列で使う時の名前のことを
キーと呼びます
配列ではインデクス、連想配列ではキーを
指定して要素を取り出すのです
なおpythonでは
配列つまりリストはlist型
連想配列はdist型となります
distというのは辞書
つまりディクショナリの略です
Pythonにはタプルという特殊な配列があります
こちらのコードをご覧ください
こちらが普通の配列です
そしてこちらがタプルです
このように角のついていない
カッコ記号を使うとタプルとなります
ではタプルは普通の配列と何が違うのでしょうか
普通の配列はこのように要素を
上書きすることができます
このコードを実行すると
インデクス0番つまり
この1の値が3で上書きされますので
その結果このような配列になります
ですがタプルで同じことをするとエラーになります
このようにタプルは後から変更することのできない配列です
この配列は絶対に変更されたくないという
特別な事情がある場合は
このようにタプルを使います
ですが普段使いとしてはこちらの普通の配列を使います
配列や連想配列を使うとこんなこともできます
まずは配列の中に配列を入れることができます
これを次元配列と呼びます
または配列の中に連想配列を入れたり
連想配列の中に配列を入れることもできます
プログラムが複雑になってくると
こういう使い方をすることもありますので
覚えておきましょう
配列の要素を一つずつ順番に取り出して処理
することをループ処理と呼びます
ループ処理を行うときはfor文を使って
このようなコードを書きます
for 変数名 IN 配列:
そして次の行にはインデント入れてから
ループ中に行う処理を書きます
このようにインデントが続く限りは
ループ中の処理として扱われます
そしてインデントが終了すると
ループの外の処理として扱われます
実際のコードを見ながら
もう少し詳しく解説していきます
まずはarrという変数に配列を代入しています
そしてループ構文の配列の場所に
このarrを指定します
次に変数名の部分は何でも良いのですが
今回はlangという名前の変数名にしました
これでこの変数arrの
要素を一つずつ順番に取り出して処理してくださいねという
ループ文の構文になります
一つずつ順番に取り出された値は
この変数langにセットされます
それでこのループ処理の動きを見て行きましょう
まずはじめに最初の要素である
pythonという文字が
取り出されます
そして取り出された値は
変数名の部分にセットされます
今回だとこの変数langという部分に
Pythonの値がセットされます
そしてループ中の処理の部分では
この変数を使って好きな処理を書くことができます
今回はprint langと書いたので
この変数の中身が出力されます
その結果1周目のループでは
pythonという文字が出力されます
次にループのインデントがここで終わりになりますので
1回目のループは終了して
配列の次の要素に処理が移ります
ですので次はRubyという文字が変数langにセットされます
そしてその状態で2周目のループ処理を行いますので
2周目の場合も同様にprint langで
Rubyという文字が出力されます
そしてまた終わりにやってきますが
これで配列の要素はすべて処理が終わりましたので
ようやくここでループ処理を抜けて
下の行へとプログラムの実行が進んでいきます
このようにfor文を使うことで
配列の要素を一つずつ取り出して
処理を行うことができます
これをループ処理と呼びます
なおこの変数名はループの中でしか使えません
ループの外でこの変数を使おうとしても
エラーになりますので注意しましょう
連想配列のループ処理について見ていきましょう
今度は変数arrは配列ではなく
連想配列になっています
そしてこの連想配列を使って
先ほどと同じようにfor文を実行してみます
するとどうなるのかと言うと
このように連想配列のキーだけが取り出されます
pythonでは、このように連想配列でfor文を使うと
キーの値だけが取り出されるのです
では連想配列の値の部分を取り出したい場合は
どうすれば良いのでしょうか
その答えはこちらになります
おさらいになりますが
連想配列で値を取り出すときは
このようにキーを指定するのでした
そしてこのループ処理の中では変数keyに
このようにキーの値が入ってきます
ということで
arrのキーの指定としてこの変数keyを使って
このように書くことで
値を取り出すことができます
もう一度わかりやすく説明すると
ループの一周目では変数keyはkey1という値です
ですのでarr[key]とこのように書くことで
これを実行したのと同じ意味になります
ですのでPythonという値が取り出されます
次の2周目も同様に
変数型にはkey2という値が入ってきますので
このように書くことで今度はarrのキーの2番
つまりRubyという文字列が取り出されます
さて連想配列のループ処理について解説しましたが
実はもっと簡単に書くこともできます
まずはforの後ろのこちらの変数の部分ですが
今回は,で区切って
二つの変数を宣言しています
そしてarrの後ろに.items()と書いています
こうすることで連想配列のキーと値を
両方いっぺんに取り出すことができます
変数keyの部分には連想配列のキーが代入されて、
変数valの部分には連想配列の値が代入されます
では実際にこちらのコードを見ていきましょう
今回はループ処理の中では
このようなprint文を実行してみます
一周目のループ処理では変数keyにはkey1
変数valにはpython
という文字列が代入されます
その結果このprint文を実行すると
“key1はPythonです”と表示されます
2周目も同様に”key2はRubyです”と表示されます
このようにitems()を使うと
連想配列のループ処理が簡単になりますので覚えておきましょう
ループ処理をスキップさせたい場合は
continue文を使います
こちらのfor文ではlangがRubyの時は
このcontinue文が実行されます
continueが実行されると
そのループ処理はスキップされて
次のループ処理に進みます
こですのでこのコードを実行すると
の配列のうちlangがRubyの時だけ
処理がスキップされますので
その結果pythonとPHPこの二つだけが出力されます
このようにループをスキップさせたい時は
continue文を使います
ループ処理を強制終了させたいときは
break文を使います
先ほどのcontinue文を使うと
そのループだけをスキップしますが
break文を使うとその時点で
ループの処理全体が強制終了となります
それではこちらの実際のコードを見て行きましょう
またこちらの配列をループ処理して行きます
一周目のループではpythonという文字が
ここで出力されます
そして2周目のループでは変数langには
Rubyという文字が代入されます
そしてここのif文で
lang=Rubyの条件に当てはまりますので
ここのbreak文が実行されます
break文が実行されるとその時点で
ループ全体が強制終了となりますので
ここでループ処理が終了します
その結果このプログラムではpythonとだけ表示されます
このようにループの全体を強制終了させたい場合は
break文を使います
処理をまとめたものをメソッドまたは
日本語で関数と言います
メソッドは呼び出されるまで実行されません
それでは実際のコードを見ていきましょう
このコードでdefと書かれたこの部分
これが一つのメソッドです
defの後ろにはstudyと書かれてますが
これはメソッドの名前です
メソッドの名前は好きな名前をつけることができます
次に括弧の中にlangと書かれていますが
これは引数と言います
引数はメソッドを呼び出すときにメソッドの外から
代入することのできる変数です
後ほどもう少し詳しく解説しています
次にインデントされたこちらの部分に
二つの処理が書かれています
このメソッドが呼び出されると
この部分の処理が実行されます
このようにメソッドは処理をまとめたものです
そして呼び出されるまでは実行されません
それではさっそくこのメソッド呼び出してみましょう
まずこのプログラムを実行すると
上から順番に処理が流れてきます
ですがメソッドの部分は
呼び出されるまでは実行されないので
このメソッド部分は処理がスキップされて
study(“python”)と書かれた部分が一番初めに実行されます
この行ではメソッドの呼び出しを行っています
このように
メソッド名を書くことでメソッドの呼び出しになります
次に(“python”)と書かれていますがこの部分では
引数にpythonという文字列を渡しています
変数langにpythonという文字列が代入されます
そして今studyメソッドが呼び出されましたので
このメソッドの中身が実行されます
変数langには引数としてpython
という文字列が渡されていますので
今回は”python入門” “python講座”という
2行が出力されます
これがメソッドの基本動作です
さてメソッドの引数についてもう少し補足をします
こちらのask()というメソッドを見てください
引数がありません
このように引数を受け取る必要のない場合は
引数なしとなります
次にsay_ageメソッドを見てください
今度は引数が二つあります
このように複数の引数を受け取りたい場合は
,で区切って複数の引数を持たせます
呼び出し側もこんな感じで
,で区切って引数を渡します
引数にはデフォルト値を持たせることができます
デフォルト値とは何も指定がない場合に採用される値のことです
実際のコードを見ながら解説していきます
今回は引数の宣言と同時に何やら値を指定しています
これがデフォルト値になります
それではこのメソッドを呼び出してみましょう
まずは引数なしで呼び出してみます
すると引数の指定が
何もない場合はデフォルト値が採用されますので
引数ににはデフォルト値である
私という文字が採用されます
同様に引数ageにはデフォルト値である
30という値が採用されます
その結果この呼び出しでは
私は三十歳ですと出力されます
次にこちらのコードですが今回は引数を
ひとつだけ指定してあります
ですので変数名には君という文字が採用されます
そして変数ageは何も指定がないので
今回もデフォルト値の30が採用されます
その結果 君は30歳です と結果が返ってきます
そして最後に二つとも引数を指定した場合は
こちらはどの引数もデフォルト値ではなく
この指定された値が採用されます
その結果 君は40歳です と出力されます
メソッドを使う時に重要となる
returnについて解説をします
メソッドの中ではreturn文を使うことができます
returnの役割は二つです
returnが実行されるとその場で
そのメソッドは強制終了となります
そしてもう一つはメソッドの呼び出し側に
値を返すことができます
それではコードを見ながら解説していきます
このコードではageが20以上だった場合に
return大人料金というコードが実行されます
returnが実行されるとその場で
メソッドの処理は強制終了となります
メソッドの中に他の処理が書いてあっても
その部分は実行されません
そしてreturnにはもう一つ
役割があります
それは呼び出し元へ
戻り値を返す役割です
戻り値というのはreturnの
右側に書いてあるこの部分です
今回は大人料金という文字列が
戻り値として呼び出し元に返されます
一方の呼び出し元では
このようにして戻り値を受け取ることができます
priceメソッドを実行した結果
大人料金という文字列が戻り値として返されます
その結果がこの変数に代入されますので
これをprintしてみると大人料金と出力されます
それでは
returnの戻り値に何も値がない場合は
どうなるのでしょうか
その場合はNoneという値が返ってきます
Noneとは値が何もないことを表す特殊な値です
なおこのNoneは他のプログラミング言語では
nullと呼ばれます
pythonでは別のファイルに書かれたプログラムを
呼び出すこともできます
実際に見ていきましょう
ここに二つのファイルがあります
sample.pyとfile2.pyです
今回はsample.pyからfile2.pyの
helloメソッド呼び出してみましょう
まずは呼び出し元のsample.pyで
import file2と書きます
file2というのは読み込みたいファイルの
ファイル名の部分です
拡張子の.pyは必要ありません。ですので
このようにimport file2と書きます
このimport宣言によって
別ファイルを読み込むことができます
pythonでは別ファイルのpythonプログラムの事を
モジュールと呼びます
それではfile2というモジュールの
helloメソッドを呼び出してみましょう
別ファイルのメソッドを呼び出す時はこのように
モジュールメソッドを呼び出します
これでfile2に書かれたhelloメソッドが呼び出されます
さて先ほどは自分で用意した
モジュールを呼び出しましたが
Pythonにはいくつもの便利なモジュールが
あらかじめ用意されています
例えば日付を便利に操作してくれる
datetimeモジュールや
計算を便利にしてくれる
mathモジュールなどがあります
それでは今回はこちらのdatetimeモジュールを使って
現在時刻の表示を行ってみましょう
現在時刻の表示を行うときは
このようなコードを書きます
datetimeモジュールをimportして
datetime.time.now
このように書くことで現在時刻が表示されます
このようにpythonではいくつもの便利なモジュールが
あらかじめ用意されています
これらの標準モジュールのことを
ライブラリと呼びます
メソッドにはタイプヒントを付け足すこともできます
タイプヒントとは
引数や戻り値の型を指定する宣言のことです
それでは実際のコードを見ていきましょう
こちらの赤字の部分に注目してください
ここで引数や戻り値の型を宣言しています
まずは引数に注目してみましょう
このsay_ageメソッドは、引数meは文字列型
引数ageは数値型で受け取ることを想定しています
meはstr型 ageはint型と、このように引数の型の指定を
赤線の部分で行なっています
書き方としては
引数の後ろにコロンと型の指定を宣言します
次に戻り値の型を見ていきましょう
このメソッドではこのような文字列を
戻り値として返します。
ですので戻り値の型はstr型ですよーという宣言を
この部分で行なっています
コロンの手前にハイフンと大なり記号を入れて
このように戻り値の型を宣言します
このように引数や戻り値の型を指定することを
タイプヒントと言います。
タイプヒントは必須ではありませんので
省略しても構いません
なおこのタイプヒントで宣言された型とは
別の型を使った場合は何が起きるのでしょうか?
例えば引数ageは数値型を期待していますがここに
文字列を渡した場合は一体どうなるのでしょうか?
他のプログラミング言語ではこういう時
エラーになるのが常識なのですが
pythonではエラーになりません
将来的にpythonのバージョンが上がった時には
エラーになるかもしれませんが
現時点のPythonバージョンでは
残念ながら何も起きません
じゃあタイプヒントなんて何も意味がないじゃん!と思いますよね
実はpythonには
mypyというチェックツールがありましてこのmypyでチェックを実行すると型の違反箇所をレポートしてくれます
型の変換について解説します
例えばここにfooという数値型の変数があります
これを文字列に変換したい場合は
strというメソッドを使います
このstrメソッドはpythonに初めから
用意されているメソッドです
これで文字列型へと変換することができます
次はその逆で文字列から数値へ
変換したい場合はint
というメソッドを使います
なお型を変換することをプログラミングの世界ではキャストと言います
型の比較方法について解説します。
type()を使うと値の型を調べることができます
例えばtype()の引数に1を指定した場合は
int型という結果が返ってきます
次に文字列の1を渡してみます。この場合は
strという結果が返ってきます
このようにtype()を使うと
値の型を調べることができます
次に型の比較です
型を比較するときは
イコール記号ではなくisを使います
ですので type(1) is int
を実行するとTrueが返ってきます
同様にtype(1) is Noneを指定すると
int型とNoneで型が違いますので
Falseが返ってきます
このように型の比較を行う場合はisを使います
コード途中で想定外のことが起きた場合は
自分でエラーを発生させることができます
この想定外エラーのことを
例外または英語でExceptionと呼びます
それでは実際のコードを見て行きましょう
このcalc_taxメソッドは引数で
数値を受け取ることを想定しています
ですので文字列など数値以外のものが
引数に渡されるのは想定外です
こういう時は引数が数値かどうかをチェックして
数値でなければ想定外エラーを発生させましょう
引数が数値であるかどうかをチェックするためには
このようにコードを書きます
if type(1) is not int
これで数値でない場合はこのif文がTrueになります
そしてpythonで例外つまり
想定外エラーを発生させる場合は
raise文を使ってこのように書きます
raise Exception
そしてExceptionの引数にはエラーメッセージを指定します
これで
iが数値でなければエラーを発生させる
というコードになりました
例外が発生するとどうなるのかと言うと
その時点で処理はエラー終了となります
実際にこのコードを実行してみると
こんな感じでエラーメッセージが表示されます
Exceptionで”数値を指定してね”と表示されます
例外が発生するとその場でエラー終了になる
と解説しましたが
書き方によっては処理を継続させることもできます
まずはこのコードのようにtryとexceptを使います
tryとexceptの間には
例外が発生するかもしれない処理を書きます
そしてこのtryの中で例外が発生した場合は
その場で全ての処理を中断して
exceptの中へと飛ばされます
これがどういうことなのか
もう少し詳しく見ていきましょう
まずはtryの中でこの行が実行されます
この行ではcalc_taxメソッドを呼び出しますが
引数で文字列を指定しているので
ここで例外が発生します
例外が発生すると
その場でexceptの中へと処理が飛ばされます
ですのでメソッドの中の
残りの処理は実行されませんし
tryの中のこちらの残りの処理も実行されません
例外が発生した時点で直ちにexceptへと飛ばされます
例えるならば悪いことをした時点で
逮捕されて警察署
に連れて行かれるようなものです
このように例外を捕まえることをキャッチすると言います
そしてキャッチされた例外は
自動的にこの変数に格納されます
この変数の使い道としては
このようにエラーメッセージを
表示させることができます
今回の場合はExceptionの引数に指定した
数値を指定してねというエラーメッセージが
ここで表示されます
最後にexceptの中の処理がすべて終了すると
このtry-except構文の外へと処理が進みます
try-except構文の外に書いてある
このprint文は実行されます
このようにtry-exceptというものを使うと
例外が発生しても処理を継続させることができます
ここからはクラスについて解説していきます
クラスは考え方が少し難しくなるので初心者が
つまずきやすいポイントになります
もしあなたがクラスやオブジェクト指向について
まだ理解ができてないのであれば
この動画を一旦ストップしてこちらの過去動画を
見てからこの動画の続きを見てください
この動画は10分でサクッと見ることができます
urlは概要欄に貼っておきます
それではpythonのクラス
について解説していきます
クラスを使うと変数やメソッドを
一つにまとめることができます
今回はクラスを使って猫を作っていきましょう
クラスを作るときはClassと書いて
その横にクラス名を指定します
今回は猫を作りますのでCatというクラス名にします
クラス名の先頭は大文字で始まるようにしてください
クラスの中には変数やメソッドを
まとめて置いておくことができます
まずはこのクラスで使うメソッドを定義してみましょう
今回は__init__(), eat(), cry() という
三つのメソッドを用意しました
ここで注目してほしいのは
クラスの中でメソッドを定義するときは第1引数は
必ずselfという引数になります
このselfが一体何者なのかは後ほど解説します
次にこのinitメソッドで
この猫の名前や体重を引数で受け取ります
そして受け取った引数はself.name=nameのように
selfとついた変数に代入して行きます
このselfととというのはこのクラス自身を表しています
このクラスは
Catクラスですので
このCatの名前は引数で渡されたこの値
このCatの体重は引数で渡されたこの値
となります
ここは後ほどもう少し詳しく解説をしていきます
このようにself.のついた変数のことを
属性またはメンバー変数と呼びます
メンバ変数はクラスの中のどこからでも
アクセス可能な変数になります
次にeat()を見ていきましょう
このメソッドは猫が食事をすると
体重が1kg増えるというプログラムです
体重を増やすためにメンバ変数のweightを
プラス1しています
メンバ変数とは
self.のついた変数のことで、クラスの中のどこからでも
アクセスできる変数のことでした
今回はself.weightの値を1プラスすることで
この猫の体重が1kg増えるということを意味しています
それではここからはこのCatクラスを使って
猫を呼び出してみましょう
Catクラスを呼び出すにはこのように書きます
このようにクラス名を呼び出すとそのクラスの
__init__()メソッドが
呼び出されるルールになっています
そして呼び出し側では二つの引数を指定しています
これらの引数はinitメソッドの名前そして
体重にそれぞれ代入されます
ここで注目してほしいのは
pythonのクラスの中ではメソッドの第一引数が
selfという特別な値になりますが
selfは呼び出し側からの値を受け取らない
特別な変数です
ですのでこのselfの文だけ一つずれて
値が代入されていきます
呼び出し側の第一引数は受け取り側では一つずれて
この第2引数のnameに代入されます
同様に呼び出し側のこの第2引数は一つずれて
こちらの受け取り側の第3引数に代入されます
これはinitメソッドに限らず
クラスの中のすべてのメソッドが
こういうルールになっていますので
覚えておきましょう
それを踏まえた上でこちらのcat1を
呼び出す処理を見ていきましう
第一引数に渡した一郎という名前がこの猫の
名前としてメンバ変数のnameに代入されています
同様に5という数字がこの猫の体重として
メンバ変数に代入されます
これで一匹の猫がこの世に生まれました
この一郎という名前の猫は
cat1という変数に代入しておきます
そしてもう一匹、二郎という
名前の猫も呼び出してみます
二郎は一郎よりも痩せているので体重は3キロです
これでcat1、cat2
2匹の猫がこの世に生まれました。
クラスを呼び出したものをインスタンスと呼びます
それではこの猫に
魚を食べさせてみましょう!
猫に餌を食べさせる時はeatメソッドを使います
eatメソッドはCatクラスの中に定義された
こちらのメソッドです
クラスの中の変数やメソッドを呼び出す時は
このようにインスタンスの後ろに.をつけて
こんな感じで呼び出します
このeatメソッドを呼び出すと体重が1kg増えます
cat1の初期体重は5kgでしたので
体重が1kg増えた結果、体重は6kgになりました
次にcat2にも同様に餌を食べさせてみます
cat2は初期体重が3kgでしたので
餌を食べた結果、体重は4kgになりました
次にもう一度cat1に餌を食べさせてみます
cat1は先ほど体重が6kgでしたので
今回餌を食べた結果もう1キロ
体重が増えるので体重は7kgになりました
ここで注目してほしいのは
cat1とcat2は別の生き物だということです
cat1が餌を食べたからといって
cat2が太ることはありません
同様にcat2が餌を食べたからといって
cat1が太ることもありません
あくまで別々の歴史別々の人生を歩んでいるのです
このようにクラスを
別々に呼び出すということは
新しい猫が生まれて一つの歴史が始まることを意味します
ですのでクラスの中の
これらのメンバ変数はお互いに別々の歴史となります
cat1が餌を食べたからといって
cat2が太ることはありません
このようにクラスを呼び出すと一つの歴史が始まります
この一つの歴史のことをインスタンスと呼びます
インスタンスはクラスを呼び出したものです
cat1でひとつのインスタンス、
cat2もまた一つの別インスタンスです
ここまでの説明でクラスやインスタンスがよく分からないという方は
こちらの過去動画で詳しく解説していますので
そちらの動画を見てからもう一度
この動画のクラスの説明を
復習してみてください
インスタンスを作る際に呼び出されるメソッドのことを
プログラミングの世界ではコンストラクタと呼びます
pythonでは__init__()がコンストラクタになります
引数を受け取る必要のない場合は
コンストラクタは省略することもできます
変わることのない値を定数と言います
定数は大文字とアンダーバーで名前を書きます
この部分が定数になります
こんな感じで定数を宣言します
クラスの中から定数を参照するときは
このようにself.
で呼び出します
定数はクラスの外からも参照することができます
クラスの外から点数を参照するときは
クラス名の後に.を付けてから
このように呼び出します
これでクラスの外から定数を
参照することができます
てここにCatクラスとDogクラスがあります
Catクラスは猫を呼び出すクラスで
Dogクラスは犬を呼び出すクラスです
この二つのクラスの違いはcryメソッドで
ニャンと鳴くかワンと鳴くかだけの違いです
こういう時は共通しているコードを一箇所にまとめましょう
まずはAnimalクラスを作って共通している
コードをここにまとめます
そしてCatクラスとDogクラスの
クラス名の隣に(Animal)と書きます
これはどういう意味かというと
Animalクラスの機能を引き継いだまま
別のクラスを定義しますという意味になります
つまりCatクラスもこちらのDogクラスも
Animalクラスの機能は全て使えますので
先ほどのこちらのコードとこちらのコードは
全く同じ意味になります
このように別クラスの機能を引き継ぐ事を
クラスの継承と呼びます
継承を使うと共通しているコード一箇所に
まとめることができるので便利です
また継承元のAnimalクラスを親クラスと呼び、
機能を引き継いだ側のCatクラスやDogクラス側
のことを子クラスと呼びます
さらに継承は何段階でも行うことができます
ばCatク例えラスを継承した孫クラス
を作ることも可能です
継承を使うと親クラスの機能を引き継ぐということがわかりましたが
引き継いだ機能は子クラス側で
上書きをすることができます
例えばAnimalクラスで定義されている
eatメソッドは
餌を食べることに体重が1kg増える
というプログラムでした
ではCatクラスにもeatメソッドを追加して
体重が2kgずつ増えるように書き換えてみましょう
これで親クラスにもCatグラスにも
全く同じメソッドが存在しています。
この場合、
親クラス側のメソッドは無視されて
子クラス側のメソッドが実行されます
つまりメソッドは上書きすることができるのです
この上書きのことをプログラミングの世界では
オーバーライドと呼びます
オーバーライドしても親クラスには影響を与えません
ですのでDogクラスのeatメソッドを実行すると
体重が1キロ増えるというプログラムのままです
![Share on Facebook Facebook](https://programming.coolstuff.jp/wp-content/plugins/social-media-feather/synved-social/addons/extra-icons/image/social/clearslate/96x96/facebook.png)
![Share on Twitter twitter](https://programming.coolstuff.jp/wp-content/plugins/social-media-feather/synved-social/addons/extra-icons/image/social/clearslate/96x96/twitter.png)
![Share by email mail](https://programming.coolstuff.jp/wp-content/plugins/social-media-feather/synved-social/addons/extra-icons/image/social/clearslate/96x96/mail.png)