1. ホーム
  2. python

[解決済み] Pythonのインスタンス変数とクラス変数

2022-07-17 04:47:36

質問

Pythonのクラスがありますが、実行時に必要なインスタンスは1つだけなので、インスタンスごとではなくクラスごとに一度だけ属性を持てば十分でしょう。複数のインスタンスがある場合(これは起こりません)、すべてのインスタンスは同じ構成を持つ必要があります。以下の選択肢のうち、どちらがより良い、あるいはよりPythonらしいと言えるのでしょうか。

クラス変数。

class MyController(Controller):

  path = "something/"
  children = [AController, BController]

  def action(self, request):
    pass

インスタンス変数です。

class MyController(Controller):

  def __init__(self):
    self.path = "something/"
    self.children = [AController, BController]

  def action(self, request):
    pass

どのように解決するのですか?

インスタンスが 1 つしかない場合、すべての変数をインスタンス単位にするのが最善です。単純に、(少し)速くアクセスでき(クラスからインスタンスへの継承により、検索レベルが 1 つ少なくなります)、この小さな利点に見合うだけのデメリットはありません。