オブジェクトとは?
オブジェクトとは、データ(値)とそれを操作するためのメソッド(関数)を持つプログラム上の「もの」 です。
Python では、すべてのデータがオブジェクト です。
- 文字列 (
str
) - 数値 (
int
,float
) - リスト (
list
) - 辞書 (
dict
) - クラス (
class
で作成したインスタンス) - モジュール (
import
したもの)
これらはすべてオブジェクトです。
オブジェクトの基本的な考え方
オブジェクトには 「属性」 と 「メソッド」 があります。
1. 属性(データ)
オブジェクトが持つ 情報(変数) のこと。
class Person:
def __init__(self, name, age):
self.name = name # ← これが属性
self.age = age # ← これも属性
person = Person("Alice", 25)
print(person.name) # "Alice"
print(person.age) # 25
person.name
や person.age
は オブジェクトの属性(データ) です。
2. メソッド(関数)
オブジェクトが持つ 機能(関数) のこと。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self): # ← これがメソッド
print(f"Hello, my name is {self.name} and I'm {self.age} years old.")
person = Person("Alice", 25)
person.greet()
# Hello, my name is Alice and I'm 25 years old.
greet()
は オブジェクトのメソッド(機能) です。
オブジェクトの特徴
1. オブジェクトは「クラス」から作られる
オブジェクトは クラス(設計図) から作られた実体(インスタンス)です。
class Car:
def __init__(self, brand, color):
self.brand = brand
self.color = color
car1 = Car("Toyota", "Red") # car1 は Car のオブジェクト(インスタンス)
car2 = Car("Honda", "Blue") # car2 も Car のオブジェクト(インスタンス)
print(car1.brand) # Toyota
print(car2.color) # Blue
-
Car
クラスが オブジェクトの設計図 で、car1
やcar2
が オブジェクト(インスタンス)。
2. オブジェクトは「状態」と「振る舞い」を持つ
オブジェクトは 状態(データ) と 振る舞い(メソッド) を持つ。
class Dog:
def __init__(self, name):
self.name = name
self.energy = 100 # ← 状態(データ)
def bark(self): # ← 振る舞い(メソッド)
print(f"{self.name} is barking! Woof Woof!")
self.energy -= 10 # 吠えるとエネルギーが減る
dog = Dog("Buddy")
dog.bark()
print(dog.energy) # 90
-
dog.name
→ オブジェクトの「状態」 -
dog.bark()
→ オブジェクトの「振る舞い」
3. Pythonのすべてのデータはオブジェクト
Python では、数値や文字列、リストなどもオブジェクト です。
x = 10
print(x.real) # 10(整数もオブジェクト!)
s = "Hello"
print(s.upper()) # "HELLO"(文字列オブジェクトのメソッド)
→ x.real
や s.upper()
は、オブジェクトの属性やメソッド を使っている例です。
オブジェクトを操作する関数
Python にはオブジェクトを操作するための便利な関数があります。
関数 | 説明 |
---|---|
type(obj) |
オブジェクトの型を取得 |
isinstance(obj, class) |
オブジェクトが特定のクラスかチェック |
dir(obj) |
オブジェクトの属性やメソッドを一覧表示 |
hasattr(obj, "attr") |
指定した属性があるかチェック |
getattr(obj, "attr", default) |
指定した属性の値を取得 |
setattr(obj, "attr", value) |
指定した属性の値を設定 |
1. type()
print(type(10)) # <class 'int'>
print(type("Hello")) # <class 'str'>
print(type([])) # <class 'list'>
→ オブジェクトの型を確認できる!
2. isinstance()
x = 10
print(isinstance(x, int)) # True
print(isinstance(x, str)) # False
→ オブジェクトが特定の型かどうか判定できる!
3. dir()
print(dir("Hello"))
→ "Hello"
のメソッド一覧が表示される。(upper()
, lower()
, strip()
など)
4. hasattr()
class Sample:
def __init__(self):
self.name = "Alice"
obj = Sample()
print(hasattr(obj, "name")) # True
print(hasattr(obj, "age")) # False
→ name
はあるけど、age
はない!
まとめ
用語 | 説明 |
---|---|
オブジェクト | データとメソッドを持つ「もの」。Pythonではすべてオブジェクト |
クラス | オブジェクトの設計図 |
インスタンス | クラスから作られた実体 |
属性(データ) | オブジェクトが持つ情報 |
メソッド(関数) | オブジェクトが持つ機能 |
Python ではすべてがオブジェクト!
-
int
,str
,list
なども オブジェクト -
hasattr()
やgetattr()
でオブジェクトの属性を操作できる -
dir()
でオブジェクトのメソッドを確認できる