Pythonで使う!メソッドと属性の違いを調べる詳細ガイド

Pythonの属性とメソッドについて

Pythonにおいて、オブジェクトと呼ばれるものには属性とメソッドがあります。属性とはオブジェクトが持つ値や状態を表し、メソッドとはオブジェクトが持つ操作を表します。

属性とは何か

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
person1 = Person("Alice", 25)
print(person1.name)  # "Alice"を出力
print(person1.age)  # 25を出力

上記の例では、Personというクラスを定義し、そのクラスからperson1というインスタンスを生成しています。person1は、nameとageという2つの属性を持っています。それぞれの属性は、インスタンス変数として定義され、値が代入されています。属性には、インスタンス変数の他に、クラス変数や特殊メソッドによって定義される場合もあります。
Pythonにおいて、属性とはオブジェクトが持つ値や状態を表します。例えば、以下のようなコードを考えてみましょう。

メソッドとは何か

class Calculator:
    def __init__(self):
        self.result = 0
    
    def add(self, num):
        self.result += num
    
    def subtract(self, num):
        self.result -= num
calculator1 = Calculator()
calculator1.add(3)
calculator1.subtract(1)
print(calculator1.result)  # 2を出力

上記の例では、Calculatorというクラスを定義し、そのクラスからcalculator1というインスタンスを生成しています。calculator1は、addとsubtractという2つのメソッドを持っています。それぞれのメソッドは、オブジェクトの状態を変更する操作を行っています。
Pythonにおいて、メソッドとはオブジェクトが持つ操作を表します。例えば、以下のようなコードを考えてみましょう。

Pythonにおける属性の調べ方

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
person1 = Person("Alice", 25)
print(dir(person1))

上記の例では、Personというクラスを定義し、そのクラスからperson1というインスタンスを生成しています。dir関数によって、person1が持つ属性のリストを取得し、それをprint関数で出力しています。
Pythonにおいて、オブジェクトが持つ属性を調べるには、dir関数を使います。例えば、以下のようなコードを考えてみましょう。

Pythonにおけるメソッドの調べ方

class Calculator:
    def __init__(self):
        self.result = 0
    
    def add(self, num):
        self.result += num
    
    def subtract(self, num):
        self.result -= num
calculator1 = Calculator()
print(dir(calculator1))
calculator1.add(3)
calculator1.subtract(1)
print(calculator1.result)  # 2を出力

上記の例では、Calculatorというクラスを定義し、そのクラスからcalculator1というインスタンスを生成しています。dir関数によって、calculator1が持つメソッドのリストを取得し、それをprint関数で出力しています。また、addメソッドとsubtractメソッドを呼び出して、オブジェクトの状態を変更しています。
Pythonにおいて、オブジェクトが持つメソッドを調べるには、dir関数を使います。ただし、dir関数によって取得できるメソッドには、特殊メソッドも含まれるため、単純に取得したメソッド名を呼び出すことはできません。例えば、以下のようなコードを考えてみましょう。

属性とメソッドの違いとは

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def greet(self):
        print("Hello, my name is " + self.name)
person1 = Person("Alice", 25)
person1.greet()  # "Hello, my name is Alice"を出力

上記の例では、Personというクラスを定義し、そのクラスからperson1というインスタンスを生成しています。person1は、nameとageという2つの属性を持っています。また、Personクラスには、greetというメソッドが定義されており、person1はこのメソッドを持っています。greetメソッドは、自己紹介をするためのメソッドであり、オブジェクトの状態を変更するわけではありません。
属性とメソッドの違いは、オブジェクトが持つものの種類にあります。属性はオブジェクトが持つ値や状態を表し、メソッドはオブジェクトが持つ操作を表します。例えば、以下のようなコードを考えてみましょう。

まとめ

Pythonにおいて、オブジェクトには属性とメソッドがあります。属性はオブジェクトが持つ値や状態を表し、メソッドはオブジェクトが持つ操作を表します。属性やメソッドを調べるには、dir関数を使います。属性とメソッドの違いは、オブジェクトが持つものの種類にあります。属性はオブジェクトが持つ値や状態を表し、メソッドはオブジェクトが持つ操作を表します。