単一インスタンス クラスのクラス変数とインスタンス変数
必要なインスタンスが 1 つだけある Python クラスを作成する場合、ジレンマに直面する可能性がありますクラス属性を格納する場所 (クラス変数またはインスタンス変数)。どちらのオプションにも長所と短所があります。
インスタンス変数
インスタンス変数は、クラスの各インスタンスに固有です。これらは、提供されている 2 番目のコード例のように、__init__ メソッド内で定義されます。
class MyController(Controller): def __init__(self): self.path = "something/" self.children = [AController, BController] def action(self, request): pass
長所:
短所:
クラス変数
一方、クラス変数は、クラスのすべてのインスタンス間で共有されます。最初のコード例のように、これらは __init__ メソッドの外部で定義されます。
class MyController(Controller): path = "something/" children = [AController, BController] def action(self, request): pass
長所:
短所:
推奨事項
クラスのインスタンスが 1 つしかないことが確実にわかっている場合は、通常、インスタンス変数を使用することをお勧めします。これにより、アクセスが若干速くなり、重複する属性による潜在的な混乱や問題が排除されます。
以上がクラス変数とインスタンス変数: Python のシングルトン クラスにはどちらが最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。