前回のが問題なく使えるか確認した。
成果物
前回まで
- ClassPropertyを他のclassのclassmethodから参照するとプロパティとして見てくれない
- Pythonでreadonlyにする方法。
- sys.modules[key]にclassインスタンスを代入して複数回それをimportしてもインスタンス初期化されないことを確認した
sys.modules
に__setattr__
で再代入禁止を実装したクラスのインスタンスを代入するという荒業。
今回の本題
任意のクラスに継承させる
Const.py
class Const: class ConstError(TypeError): pass def __setattr__(self,name,value): if name in self.__dict__.keys(): raise self.ConstError('readonly。再代入禁止。') self.__dict__[name]=value
MyConst.py
from Const import Const class MyConst(Const): pass import sys sys.modules[__name__]=MyConst()
MyConstに再代入禁止を実装できた。
本当はsys.modules
への代入も継承しただけで自動的にやって欲しかったが、また次回。
所感
現状では中途半端で実用できない。