シングルトン インスタンスのインスタンス属性を優先する
クラスの単一インスタンスのみが必要なシナリオでは、インスタンス属性を使用するか、インスタンス属性を使用するかを選択します。クラス属性については考慮する必要があります。どちらのアプローチも属性を効果的に保存しますが、効率と範囲の点で微妙な違いがあります。
クラス属性
クラス属性はインスタンス メソッドの外部で定義され、すべてのインスタンス メソッド間で共有されます。クラスのインスタンス。シングルトン インスタンスにクラス属性を使用すると、すべてのインスタンスに同じデータが存在するため、冗長性が生じる可能性があります。さらに、クラス属性を変更すると、すべてのインスタンスに影響します。
インスタンス属性
インスタンス属性は、逆に、コンストラクター (__init__) 内で定義され、コンストラクター (__init__) 内で定義されます。各インスタンス。シングルトンの場合、このアプローチにより、属性が 1 回だけ初期化され、唯一のインスタンス内に格納されることが保証されます。これにより、検索の深さが減少するため、クラス属性よりもパフォーマンスが若干向上します。
推奨事項
クラスのインスタンスが 1 つだけである状況では、次のようになります。インスタンス属性を使用することをお勧めします。これにより、データへのアクセスが効率化され、複数のインスタンスに影響を与える意図しない変更のリスクが排除されます。
例
次の Python コードを考えてみましょう。単一のインスタンスによってのみ使用されます:
class MyController: def __init__(self): self.path = "something/" self.children = [AController, BController] def action(self, request): pass
この例では、インスタンス属性を使用することで、 MyController クラスの唯一のインスタンスには属性セットが 1 つだけ存在するため、最適な効率とデータ分離が実現します。
以上がPython のシングルトン インスタンスにはインスタンス属性とクラス属性のどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。