Python3エンジニア認定試験
今回は9章です!
クラスとは
実体を表現するための雛形
Personという雛形を考えると
・Name, Ageで具体的なPersonが決まる
→インスタンス
・雛形→クラス
# Personクラスからインスタンスを生成
>>>class Person:
... def __init__(self, name, age):
... self.name = name
... self.age = age
...
>>>me = Person("gepro", 30)
>>>print(me.name, me.age)
gepuro 30
オブジェクト
・Pythonではあらゆるデータ(関数、クラス、数字など)がオブジェクト
・オブジェクトは型(Type)がある
→数字:int型
→文字:str型
メソッド
クラス内で定義された関数
defメソッド名(self):と書く
# メソッドの定義
>>>class Person:
... def __init__(self, name, age):
... self.name = name
... self.age = age
... def say_hello(self):
... print(f"Hello, {self.name}")
...
#メソッドの呼び出し
インスタンス名.メソッド名 で実行
>>>me = Person("gepro", 30)
>>>me.say_hello()
Hello, gepuro
クラス変数
全てのインスタンスが共有する
#この世の中に日本語しかなければ
>>>class Person:
... language = "Japanese"
... def __init__(self, name, age):
... self.name = name
... self.age = age
...
>>>me = Person("gepro", 30)
>>>me.language
'Japanese'
継承
クラスが持つ機能を別のクラスに受け渡す
・例:ManクラスとWomanクラスを定義したい場合、同じきのうのメソッドを持つ
親:Person(メソッド:食べる・寝る)
子:Man(メソッド:食べる・寝る・性別=男性)
子:Woman(メソッド:食べる・寝る・性別=女性)
・親クラスのメソッドを上書き(オーバーライド)することもできる
多重継承
複数のクラスを継承
class Child(Person):
class Boy(Man, Child):
Boy →Man →Child →Personの順で探索
例外はクラス
Exceptionクラスを継承して自作もできる
class MyError(Exception):
pass
イテレータ(反復子)
自分で書くことは少ない
#ジェネレータ
繰り返し処理を書くときに頻繁に使う
>>def reverse(data):
... for index in range(len(data)-1, -1, -1):
... yield data[index]
...
>>>for char in reverse("game"):
... print(char)
...
e
m
a
g
ジェネレータ式
コンパクトに記述可
#0~9を2乗して合計を計算
>>>sum(i*i for i in range(10))
285
感想
クラス、使いこなせるととても便利になる、もしくは開発の時に欠かせないものになるんだろうなと感じました。
週末サボっていた分、追い上げまして明日で一通りインプットは完了しそうなところまできました。
目標より1日遅延です。
明日終わらせて、今週は実際に問題を解いていきたいと思います。
出典
データサイエンティストgepuroさん
「Python3エンジニア認定基礎試験 合格への勉強方法」
https://www.youtube.com/watch?v=BUzFIGyIojg&list=PLO-KH_xqEh8FHpIUXWHVJnJLXi6XO7BF