Pythonで学ぶ属性とメソッドの違い
Pythonを学び始めると、クラスの中でよく出てくる「属性」と「メソッド」という言葉に出会います。最初は似たように見えますが、実際には大きな違いがあります。この記事では、例を交えながら分かりやすく解説します。
属性(Attribute)とは?
属性は、オブジェクトが持つ「データ(値)」のことです。
クラスの中で定義された変数や、インスタンスごとに異なる値を持つものを指します。
class Dog:
def __init__(self, name, age):
self.name = name # これが属性
self.age = age # これも属性
my_dog = Dog("Pochi", 3)
print(my_dog.name) # => Pochi
print(my_dog.age) # => 3
上の例では、name と age が属性です。
つまり、属性 = オブジェクトが持つ情報です。
メソッド(Method)とは?
メソッドは、オブジェクトが「できること」や「振る舞い」を定義した関数のことです。
属性が「データ」だとすると、メソッドは「動作」です。
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name}がワン!と吠えました。")
my_dog = Dog("Hachi")
my_dog.bark() # => Hachiがワン!と吠えました。
ここで bark() がメソッドです。
つまり、メソッド = オブジェクトが持つ機能です。
属性とメソッドの違いをまとめると
| 比較項目 | 属性 | メソッド |
|---|---|---|
| 意味 | データ・情報 | 振る舞い・機能 |
| 定義場所 | クラス内の変数 | クラス内の関数 |
| 呼び出し方 | obj.name |
obj.method() |
| 変更の仕方 | obj.name = 'new' |
メソッド内で動作 |
まとめ
- 属性は「オブジェクトが何を持っているか」
- メソッドは「オブジェクトが何をできるか」
これを押さえておくと、クラス設計やオブジェクト指向プログラミングの理解がぐっと深まります。
補足
- 組み込み関数
dir(obj)を使うと、そのオブジェクトが持つ属性やメソッドを一覧で確認できます。
print(dir(my_dog))
タグ: #python #初心者 #オブジェクト指向