


Python のデコレータを理解する
デコレーターは、オブジェクトの元の実装を変更せずに、オブジェクトの動作を変更または拡張できるデザイン パターンです。つまり、デコレータを使用すると、コア コードを変更せずに、既存のオブジェクトに新しい機能を追加できます。デコレータは通常、オブジェクトを引数として受け取り、元のオブジェクトを「ラップ」する新しいオブジェクトを返す関数です。新しいオブジェクトは、元のオブジェクトと同じメソッドと属性を持ちますが、デコレータによって提供される追加の機能や動作もいくつか持っています。たとえば、「drive」というメソッドを持つ「Car」というクラスがあるとします。 ()` これで車が動きます。車の速度を制限するために `drive()` メソッドを変更する `SpeedLimitDecorator` というデコレーターを作成できます。 `SpeedLimitDecorator` は元の `Car` オブジェクトを引数として受け取り、元の `Car` と同じメソッドと属性を持つ新しい `Car` オブジェクトを返しますが、速度を制限する機能が追加されています。 Python でデコレーターを使用する方法の例:
```
class Car:
def drive(self):
print("The car is Driving")
class SpeedLimitDecorator:
def __init__(self, car):
self。 car = car
def drive(self):
self.car.drive()
print("車は現在時速50マイルに制限されています")
car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # prints 「車は運転中です」および「車は時速 80 マイルに制限されています」
```
この例では、`SpeedLimitDecorator` クラスはコンストラクターの引数として `Car` オブジェクトを受け取り、`drive(元の `Car` オブジェクトの )` メソッドを使用して速度を制限します。 `SpeedLimitDecorator` クラスには、ラップされたオブジェクトの元の `drive()` メソッドを呼び出す独自の `drive()` メソッドもありますが、時速 50 マイルの制限が追加されています。 Decorators は、既存のオブジェクトを変更または拡張するための強力なツールです。元の実装を変更することなく。これらを使用すると、コードの残りの部分に影響を与えることなく、新しい機能を追加したり、動作を変更したり、オブジェクトの実装の一部を置き換えたりすることさえできます。



