こんばんは。毎度お世話になっております。
質問は表題の通りとなります。
ただ、質問をわかりやすく説明するために、具体的な状況を設定しておきます。次のようなPythonのコードがあるとします。
問題のコード
# -*- coding: utf-8 -*- COUNTER = 0 class Human: id = 0 def __init__(self): global COUNTER COUNTER += 1 self.id = COUNTER print("Human id = {id}".format(id=self.id)) if __name__ == '__main__': A_san = Human() B_san = Human() # これ以降もHumanクラスからインスタンスを生成し続ける。
やりたいこと
上記のようなコードでは、Humanクラスから生成されたインスタンスは、それぞれメンバ変数として(とても単純な)一意のidが割り当てられるようになっています。
やりたいこととしては、次のようなコードがあると、質問の目的を達成できます。
(※以下のコードはダミーコードです。実際には動きません)
for _instance in Human.__getallinstance__: print("Human ID = {id}".format(id=_instance.id)) # 結果が次のようになると嬉しい # Human ID = 1 # Human ID = 2 # ....
Teratailに投稿するまでにやったこと
「Python インスタンス 取得」などで検索は掛けましたが、私の検索ワードではなかなかヒットしませんでした。英語で検索をかけると、シングルトンパターンが引っかかりましたが、シングルトンパターンがよく引っかかった次第です。。。
後、オライリーのPythonチュートリアル 第2版(いまは3版ですが)で書いてあったような、無かったような気もしますが、手元に無かったのでTeratailの方でで聞こうという次第です。
私も引き続き、調べますが、どうか、ご教授下さいませ。よろしくお願いします。
また、自己解決した場合はその方法を投稿致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/05 06:58