Python の合成は、オブジェクトを他のオブジェクトのプロパティとして組み合わせる方法です。継承とは異なり、合成を使用すると、オブジェクトのカプセル化を維持しながら、より柔軟なオブジェクトを作成できます。
このチュートリアルでは、Python で複合クラスを定義する方法を示し、いくつかのサンプル コードを提供します。
1.複合クラスを定義する
複合クラスを定義する最初のステップは、複合関係を決定することです。Person
と の2 つのクラスがあるとしますJob
。誰もが仕事を持つことができますが、複数の人が仕事を共有することもできます。Job
この関係は、クラスをクラスのプロパティとして構成して実装できますPerson
。
class Job:
def __init__(self, title, salary):
self.title = title
self.salary = salary
class Person:
def __init__(self, name, age, job=None):
self.name = name
self.age = age
self.job = job
上記の例では、Person
クラスのコンストラクターにjob
という名前のオプションのパラメーターが含まれています。Person
このパラメータが渡されると、オブジェクトのプロパティとして保存されます。
2. 複合オブジェクトのプロパティにアクセスします。
構成関係を含むクラスを定義したので、それを使用してオブジェクトを作成し、そのプロパティにアクセスできます。以下に例を示します。
job = Job("Software Developer", 80000)
person = Person("Alice", 30, job)
print(person.name)
print(person.job.title)
この例では、まずオブジェクトを作成しJob
、それをPerson
オブジェクトのコンストラクターに渡します。次に、Person
オブジェクトのプロパティname
とjob
そのプロパティのプロパティを出力しましたtitle
。
3. 複合オブジェクトのプロパティを変更する
複合オブジェクトのプロパティは、通常のオブジェクトのプロパティにアクセスするのと同じように変更できます。Person
次に、オブジェクトのプロパティを変更する例を示しますjob
。
new_job = Job("Data Analyst", 60000)
person.job = new_job
print(person.job.title)
この例では、最初に新しいJob
オブジェクトを作成し、それをPerson
オブジェクトのjob
プロパティに割り当てました。Person
最後に、オブジェクトのjob
プロパティを出力して、title
変更が成功したことを確認しました。
4. まとめ
このチュートリアルでは、Python を使用して複合クラスを定義する方法を示します。合成は、オブジェクトを他のオブジェクトのプロパティとして結合する方法であり、オブジェクトのカプセル化を維持しながら、より柔軟なオブジェクトを作成できるようになります。まず 2 つのクラスを定義し、次にそのクラスをPerson
class 内の属性として使用しますJob
。また、複合オブジェクトのプロパティにアクセスして変更する方法も示しました。
このチュートリアルが Python の複合クラスについて学び、独自のコードで複合クラスを使用するのに役立つことを願っています。