★Python 学習記録(9/5~9/9)
使用教材:スッキリわかるPython入門 第2版
学習期間:2025/9/5~9/9
直近の目標:Python 3 エンジニア認定基礎試験
chapter 6 オブジェクト
6-1 「値」の正体
-
「データ」と「その処理を行う関数」を一塊にしたものをオブジェクトという.
-
Pythonにおけるあらゆる値はオブジェクトである.
→あらゆるものをオブジェクトとして扱うのがPythonの特徴のひとつ
国本大悟, 須藤秋良. スッキリわかるPython入門 第2版. 2023, 232p.
tpl = '{}と{}がライブします!'
message = tpl.format('punpee', 'stuts') #オブジェクト.メゾッド名(引数,…)
print(message)
def add(x,y): #関数オブジェクトを定義
return x+y
type(add) #type関数
newadd=add #別の変数にオブジェクトを代入
print(newadd(4,5))
- オブジェクトが従える関数は、「型」によって決まる.(https://docs.python.org/ja/3/library/stdtypes.html#numeric-types-int-float-complex)
6-2 オブジェクトの設計図
オブジェクトの設計図…クラス(class)
全てのオブジェクトは、このクラス定義に基づいて誕生し、どのクラスから生まれたかによって、型と持つメゾッドが決まる.
(★) クラス(class)についてcopilotに相談する, 以下はクラスと関数の違いについて.
🔹 関数(Function)
- 役割:ひとつの処理をまとめる
- 特徴:入力(引数)を受け取り、出力(戻り値)を返す
- 使いどころ:単純な処理や繰り返し使いたいロジックに便利!
def greet(name):
return f'こんにちは、{name}さん!'
print(greet('Y')) # → こんにちは、Yさん!
🔸 クラス(Class)
- 役割:データとその操作をひとまとめにした「設計図」
- 特徴:属性(データ)とメソッド(関数)を持つ
- 使いどころ:複雑なデータ構造や、複数の処理をまとめたいときに便利!
class Greeter:
def __init__(self, name):
self.name = name
def greet(self):
return f'こんにちは、{self.name}さん!'
g = Greeter('Y')
print(g.greet()) # → こんにちは、Yさん!
/class Greeter: → クラスの定義
/__int__ → インスタンスが創られたときに呼ばれる「コンストラクタ」
/self.name → インスタンスごとの名前
/greet() → メゾッド(関数)
| 比較項目 | 関数 | クラス |
|---|---|---|
| 目的 | 単一の処理 | データと処理のセット |
| 再利用性 | 処理単位で再利用 | オブジェクト単位で再利用 |
| データ保持 | 一時的 | 永続的(属性として保持) |
- オブジェクトに様々な属性やメゾッドを持たせて活用していく考え方をオブジェクト指向プログラミングという. オブジェクトを活用することで、簡潔に’複雑なプログラム’を開発できる.
6-3 オブジェクトの落とし穴
☆identify (同一性)に関して…
Pythonでは、すべてのオブジェクトに「ID(識別番号)」が割り当てられてるんだ。このIDは、オブジェクトがメモリ上のどこにあるかを示すもので、id() 関数で確認できる.
a = [1, 2, 3]
b = a
print(id(a)) # 例えば 12345678
print(id(b)) # 同じく 12345678
☆参照に関して…
変数はオブジェクトそのものじゃなくて、「そのオブジェクトへの参照(リンク)」を持っている. 簡単に言えば, 〈変数は「モノそのもの」じゃなくて,「そのモノがどこにあるか」を覚えてる〉ということ.
a = [1, 2, 3]
b = a
b[0] = 99
print(a) # [99, 2, 3]
理解が追い付いていないので,不変オブジェクトの項目に関しては飛ばす. Udemyの講座を活用して、後追いで復習を掛ける. Python3の試験は今月中に申し込む.