はじめに
プログラミング初学者が自分なりにPythonについてまとめてみた。
もし間違っていることを書いているようならご指摘いただけると幸いです。
Pythonとは
Pythonはオブジェクト指向プログラミング言語と呼ばれており、少ないコードで簡潔にプログラムを書ける。
公式ドキュメント

Pythonでできること
- AI(機械学習・深層学習)
- Webサイト作成
- ゲーム制作
- Web上の情報収集ツール(スクレイピング)
- データ処理・分析・解析
使用例
公式サイトから引用
- YouTube
"Python is fast enough for our site and allows us to produce maintainable features in record times, with a minimum of developers," said Cuong Do, Software Architect, YouTube.com.
- Google
"Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we're looking for more people with skills in this language." said Peter Norvig, director of search quality at Google, Inc.
オブジェクトとクラス
オブジェクトとは、データだけでなく、振る舞い(メソッド)を含み、クラスを定義することによって生成できるもののことである。
クラスではオブジェクトを作成する際の__データ__や__メソッド__を定義する。
classとは、クラスを定義する際のキーワード(予約語)である。
クラスもオブジェクトの一種で(pythonはすべてオブジェクト)、クラスから生成したオブジェクトを特別に区別するために__インスタンス__と呼んでいる。
class SchoolMember:
def __init__(self, classes, name, number):
self.classes = classes
self.name = name
self.number = number
基本的なクラス定義の仕方はclassの後にクラス名を指定し、def ~~で関数(メソッド)を記述する。
この時、クラス名は大文字から始める。
__コンストラクタ__は、__init__という名前で定義するのがルールである。
__コンストラクタ__はオブジェクト生成時に最初に実行される、初期化用の関数のことである。
コンストラクタの第一引数は__self__とし、__self__は__インスタンス__自身を指す。
# インスタンス生成
school_member1 = SchoolMember(1, 'Taro', 10)
# インスタンスの参照(instance).(member)
print(school_member1.classes) # 1
print(school_member1.name) # Taro
print(school_member1.number) # 10
# memberの書き換えも可能
school_member1.classes = 2
print(school_member1.classes) # 2
クラス内で定義された変数のことを__member__と呼び、今回だとclasses、 name、numberである。
クラスの継承
親クラスの機能をそのまま引き継いだ子クラスをクラスの継承と呼ぶ。
クラスの継承には既存のクラスが必要であり、既存のクラスに機能を追加したいときにクラスの継承を行うことで既存クラスに直接書き加えることなくメソッドなどの追加ができる。
クラスの継承元は親クラスやスーパークラスなどと呼ばれ、継承先のクラスを子クラスや派生クラスなどと呼ばれる。
簡単なクラス継承
class Game:
def __init__(self, name, hardware):
self.name = name
self.hardware = hardware
# 継承先(子クラス)の生成
class GameChild(Game):
def __init__(self, name, hardware, category):
self.name = name
self.hardware = hardware
self.category = category
game1_data = GameChild('Apex', 'PC', 'FPS')
print(game1_data.name)
# Apex
super()を使ったクラス継承
class Game:
def __init__(self, name, hardware):
self.name = name
self.hardware = hardware
class GameChild(Game):
def __init__(self, name, hardware, category):
# 親クラスのコンストラクタの呼び出し
super(GameChild, self).__init__(name, hardware)
self.category = category
game1_data = GameChild('VALORANT', 'PC', 'FPS')
print(game1_data.name)
# VALORANT
メソッド
メソッドとは、クラス内で定義された関数やオブジェクトの属性として参照される関数などのことである。
class Friend:
def __init__(self, year, sex, height, weight):
self.year = yaer
self.sex = sex
self.height = height
self.weight = weight
def calculation_BMI(self):
bmi = round(self.weight / ((self.height / 100) ** 2))
return bmi
friend1_data = Friend(20, 'man', 170, 55)
print(friend1_data.calculation_BMI())
関数とメソッドの違い
呼び出し方の違い
関数: 単独で呼び出しできる
メソッド: 変数や値に付けて呼び出す
print()、len()などは単独で呼び出せるので関数である。
print("Hello! Taro.")
# Hello! Taro.
print(len(["dog", "cat", "hamster", "fish"]))
# 4
リストに要素を追加するappend()や文字列を繋ぐjoin()は変数や値に付けて呼び出すメソッドである。
変数や値の後にドット(.) + メソッドとすることで呼び出すことができる。
animal_list = ["dog", "cat", "hamster", "fish"]
animal_list.append("lion")
print(animal_list)
# ["dog", "cat", "hamster", "fish", "lion"]
animal_list_join = "/".join(animal_list)
print(animal_list_join)
# dog/cat/hamster/fish/lion
ただし、メソッドはデータ型に紐付いた関数のため、呼び出せる種類はデータ型で異なる。
上記の例のappend()はリスト型の変数には使えるが辞書型には使えない。
またどちらでも使えるメソッドpop()などもある。
参考