Pythonで、クラスAのインスタンスが作成されたかどうかを別のクラスBからクラスAのnewやinitを通さずに確認したい

実現したいこと

例示コードの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 @classmethod11 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

試したこと・調べたこと

上記の詳細・結果

聞き方が悪いのかGoogleから得るものはありませんでした。
ChatGPT3.5でも聞きましたが私が書いたコードと同じものが帰ってきました。

補足

特になし

コメントを投稿

0 コメント