実現したいこと
例示コードのSecondクラスからFirstクラス(シングルトンパターンのクラス)のインスタンスが作成されていることを確認し、まだできてなければ例外としたい、Secondクラスのインスタンスが作成される前にFirstクラスのインスタンスが作成されていることを保証したいです。
発生している問題・分からないこと
SecondクラスからFirstクラスのインスタンスが作成されていることを確認しようとするとFirstクラスの__new__や__init__が呼び出されて結局インスタンスが作成されてしまいます。
(例示したコードでは伝わらないですがFirstクラスのインスタンス作成までにはいろいろと処理しており、SecondクラスからFirstクラスのインスタンスが作成できたから良いよね、という話ではありません。)
該当のソースコード
Python
1class First: 2 3 def __new__(cls): 4 5 if not hasattr(cls, "_instance"): 6 cls._instance = super(First, cls).__new__(cls) 7 print("Firstインスタンスが作成された。") 8 return cls._instance 9 10 @classmethod 11 def is_created_instance(cls) -> bool: 12 13 return hasattr(cls, "_instance") 14 15 16class Second: 17 18 def __init__(self) -> None: 19 if not First().is_created_instance(): 20 raise Exception("まだFirstのインスタンスは作成されていない。") 21 print("Secondインスタンスが作成された。") 22 23 24# 例外にしたいが。。。 25B = Second() 26A = First() 27
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
聞き方が悪いのかGoogleから得るものはありませんでした。
ChatGPT3.5でも聞きましたが私が書いたコードと同じものが帰ってきました。
補足
特になし
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/04/19 07:24