Menu
Coddy logo textTech

属性

CoddyのPythonジャーニー「Object Oriented Programming」セクションの一部 — レッスン 6/64。

属性は、クラスまたはそのオブジェクトに属するデータや変数です。これらはオブジェクトの状態に関する情報を保持します。

属性には2つのタイプがあります: 

クラス属性 - クラスのすべてのオブジェクトで共有されます:

class Student:
    school_name = "Python Academy"  # クラス属性

インスタンス属性 - 各オブジェクトに固有:

class Student:
    school_name = "Python Academy"
    
    def set_info(self, name, age):
        self.name = name    # インスタンス属性
        self.age = age      # インスタンス属性

学生オブジェクトを作成し、それぞれのデータを設定します:

student1 = Student()
student2 = Student()

student1.set_info("Alice", 20)
student2.set_info("Bob", 22)

インスタンス属性(各オブジェクトに固有)にアクセスします:

print(student1.name)    # Alice
print(student2.name)    # Bob
print(student1.age)     # 20

クラス属性にアクセスします(すべてのオブジェクトで共通):

print(student1.school_name)    # Python Academy
print(student2.school_name)    # Python Academy
print(Student.school_name)     # Python Academy

出力:

Alice
Bob
20
Python Academy
Python Academy
Python Academy

主な違い: クラス属性はすべてのオブジェクトで共有されますが、インスタンス属性は各オブジェクトに固有です。インスタンス属性には self.attribute_name を使用し、クラス属性には単に attribute_name を使用します。

チートシート

属性(アトリビュート)は、クラスまたはそのオブジェクトに属するデータや変数です。

クラス属性 - クラスのすべてのオブジェクトで共有されます:

class Student:
    school_name = "Python Academy"  # クラス属性

インスタンス属性 - 各オブジェクトに固有で、selfを使用して定義されます:

class Student:
    school_name = "Python Academy"
    
    def set_info(self, name, age):
        self.name = name    # インスタンス属性
        self.age = age      # インスタンス属性

インスタンス属性へのアクセス:

student1 = Student()
student1.set_info("Alice", 20)
print(student1.name)    # Alice

クラス属性へのアクセス:

print(student1.school_name)    # Python Academy
print(Student.school_name)     # Python Academy

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Object Oriented Programmingのすべてのレッスン