2024-heraklion-scientific-p.../code_snippets/factory_methods.ipynb
2024-08-27 15:52:41 +03:00

3.9 KiB

In [4]:
import json
import numpy as np
In [14]:
dict_ = {'a': 3.1, 'b': 4.2}
with open('my_class.json', 'w') as f:
    json.dump(dict_, f)
In [20]:
class MyClass:
    
    def __init__(self, a, b):
        """The basic constructor takes 'raw' values."""
        self.a = a
        self.b = b
        
    @classmethod
    def from_random_values(cls, random_state=np.random):
        """Create a MyClass instance with random parameters."""
        a = random_state.rand()
        b = random_state.randn()
        return cls(a, b)
    
    @classmethod
    def from_json(cls, json_fname):
        """Create a MyClass instance with parameters read form a json file."""
        with open(json_fname, 'r') as f:
            dict_ = json.load(f)
        a = dict_['a']
        b = dict_['b']
        return cls(a, b)

my_class = MyClass.from_random_values()
In [23]:
my_class = MyClass.from_random_values()
my_class.__dict__
Out[23]:
{'a': 0.842940228048758, 'b': 0.2797222990193814}
In [24]:
my_class = MyClass.from_json('my_class.json')
my_class.__dict__
Out[24]:
{'a': 3.1, 'b': 4.2}
In [ ]:

In [ ]: