Python Classes Generator#
This code generator produces the Python domain model, i.e. the set of Python classes that represent the entities and relationships of a Structural model.
Let’s generate the code for the Python domain model of our Structural model example structural model example.
You should create a PythonGenerator
object, provide the Structural model, and use
the generate
method as follows:
from besser.generators.python_classes import PythonGenerator
generator: Python_Generator = PythonGenerator(model=library_model)
generator.generate()
The classes.py
file with the Django domain model (i.e., the set of classes) will be generated in the <<current_directory>>/output
folder and it will look as follows.
1
2from datetime import datetime, date, time
3
4
5class Book:
6 def __init__(self, pages: int, release: datetime, title: str, writtenBy: set["Author"], locatedIn: "Library"):
7 self.pages = pages
8 self.release = release
9 self.title = title
10 self.writtenBy = writtenBy
11 self.locatedIn = locatedIn
12
13 @property
14 def pages(self) -> int:
15 return self.__pages
16
17 @pages.setter
18 def pages(self, pages: int):
19 self.__pages = pages
20
21 @property
22 def release(self) -> datetime:
23 return self.__release
24
25 @release.setter
26 def release(self, release: datetime):
27 self.__release = release
28
29 @property
30 def title(self) -> str:
31 return self.__title
32
33 @title.setter
34 def title(self, title: str):
35 self.__title = title
36
37 @property
38 def writtenBy(self):
39 return self.__writtenBy
40
41 @writtenBy.setter
42 def writtenBy(self, writtenBy):
43 self.__writtenBy = writtenBy
44
45 @property
46 def locatedIn(self):
47 return self.__locatedIn
48
49 @locatedIn.setter
50 def locatedIn(self, locatedIn):
51 self.__locatedIn = locatedIn
52
53class Author:
54 def __init__(self, name: str, email: str, publishes: set["Book"]):
55 self.name = name
56 self.email = email
57 self.publishes = publishes
58
59 @property
60 def name(self) -> str:
61 return self.__name
62
63 @name.setter
64 def name(self, name: str):
65 self.__name = name
66
67 @property
68 def email(self) -> str:
69 return self.__email
70
71 @email.setter
72 def email(self, email: str):
73 self.__email = email
74
75 @property
76 def publishes(self):
77 return self.__publishes
78
79 @publishes.setter
80 def publishes(self, publishes):
81 self.__publishes = publishes
82
83class Library:
84 def __init__(self, address: str, name: str, has: set["Book"]):
85 self.address = address
86 self.name = name
87 self.has = has
88
89 @property
90 def address(self) -> str:
91 return self.__address
92
93 @address.setter
94 def address(self, address: str):
95 self.__address = address
96
97 @property
98 def name(self) -> str:
99 return self.__name
100
101 @name.setter
102 def name(self, name: str):
103 self.__name = name
104
105 @property
106 def has(self):
107 return self.__has
108
109 @has.setter
110 def has(self, has):
111 self.__has = has
112