Small library for observation mechanism
Project description
ntt-json-model
Library with model object which is observable and can be serialize and deserialize from json file
Example
With primitive
data
from ntt_json_model import *
class TestModel(ModelBase):
def __init__(self,
nValue: int = 3,
strName: str = "Hello",
fTemp: float = 3.1,
lstScores: List[int] = []) -> None:
super().__init__()
IntegerProperty(self, nValue, "_nValue")
FloatProperty(self, fTemp, "_fTemp")
StrProperty(self, strName, "_strName")
ListProperty(self, lstScores, "_lstScores")
@property
def Value(self) -> int:
return self._nValue.GetValue()
@Value.setter
def Value(self, nValue: int) -> None:
self._nValue.SetValue(nValue)
@property
def Temp(self) -> str:
return self._fTemp.GetValue()
@Temp.setter
def Temp(self, fTemp: float) -> None:
self._fTemp.SetValue(fTemp)
@property
def Name(self) -> str:
return self._strName.GetValue()
@Name.setter
def Name(self, strName: str) -> None:
self._strName.SetValue(strName)
@property
def Scores(self) -> List[int]:
return self._lstScores.GetValue()
ModelBase.mSubModels[TestModel.__name__] = TestModel
def PrintIfChanged() -> None:
print("Model has changed")
model = TestModel()
model.Connect(PrintIfChanged)
model.Temp = 3 # ---> "Model has changed"
print(model.ToDict())
# Output:
# {
# "__class__": "TestModel",
# "_nValue": 3,
# "_fTemp": 3.0,
# "_strName": "Hello",
# "_lstScores": []
# }
model.FromDict({
"__class__": "TestModel",
"_nValue": 3,
"_fTemp": 3.0,
"_strName": "Hello",
"_lstScores": [4, 3]
})
Model
Data
class TestModelClass(ModelBase):
def __init__(self, nScore: int = 4, *args, **kwargs) -> None:
super().__init__()
IntegerProperty(self, nScore, "_nScore")
ModelProperty(self, TestModel(*args, **kwargs), "_mTestModel")
@property
def Score(self) -> int:
return self._nScore.GetValue()
@Score.setter
def Score(self, nNewScore: int) -> None:
self._nScore.SetValue(nNewScore)
@property
def TestModel(self) -> TestModel:
return self._mTestModel.GetValue()
ModelBase.mSubModels[TestModelClass.__name__] = TestModelClass
Model List
Data
class TestModelListClass(ModelBase):
def __init__(self, fScore: float = 8.5) -> None:
super().__init__()
FloatProperty(self, fScore, "_fScore")
ModelListProperty(self, [], "_mModels")
@property
def Score(self) -> float:
return self._fScore.GetValue()
@Score.setter
def Score(self, fNewScore: float) -> None:
self._fScore.SetValue(fNewScore)
@property
def Models(self) -> List[TestModelClass]:
return self._mModels.GetValue()
ModelBase.mSubModels[TestModelListClass.__name__] = TestModelListClass
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ntt-json-model-1.0.2.tar.gz
(8.6 kB
view details)
Built Distribution
File details
Details for the file ntt-json-model-1.0.2.tar.gz
.
File metadata
- Download URL: ntt-json-model-1.0.2.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37e778aec0909748016e21ade850dcee9fd69d1f3e99382d1b010cb2d91b7fa8 |
|
MD5 | e0d648808b9bec82f2c0e267f8d89f10 |
|
BLAKE2b-256 | 8a3f6d14aed687bdccad680be0c4453366e9ff9370cbb04a0f1e5502ebe3e418 |
File details
Details for the file ntt_json_model-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: ntt_json_model-1.0.2-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88ba87a97d06a64d387c7cae75a63fd2c27974157ab47f5f9b7786d1d8c35840 |
|
MD5 | 67614f0c13700e8f5bafc73f38be2b2e |
|
BLAKE2b-256 | 23d85c2ca5d332968633e54cd03738f80194c9d87b33424ad5f3c5e258e5ea54 |