12 from __future__
import print_function
17 This class is only defined to implement a path of attribute
18 to store entity commands. It has no members except those automatically
19 defined at run time (which should be CommandPath or functions).
25 privateName = name +
"_obj"
26 if privateName
in self.__dict__:
27 obj = getattr(self, privateName)
30 return object.__getattr__(self, name)
34 def createGetter(name):
36 obj = getattr(self, name)
42 privateName = name +
"_obj"
45 if not isinstance(target, CommandPath):
46 setattr(target, name, property(createGetter(privateName)))
63 if isinstance(target, CommandPath):
64 privateName = name +
"_obj"
67 setattr(target, name, fun)
72 Create in target an new attribute with value path (available at
73 target.path1. ... .pathn).
77 if isinstance(path, str):
78 path = path.split(
".")
79 for tokenk
in path[0:-1]:
80 if (
not read) | (tokenk
not in pathk.__dict__):
83 pathk = getattr(pathk, tokenk +
"_obj")
84 if callable(attribute):
87 print(
"Should not happen")
88 setattr(pathk, path[-1], attribute)
93 Get in target the value located at path (available at
94 target.path1. ... .pathn).
97 if isinstance(path, str):
98 path = path.split(
".")
100 privateName = tokenk +
"_obj"
101 if hasattr(pathk, privateName):
102 pathk = getattr(pathk, privateName)
104 if hasattr(pathk, tokenk):
105 pathk = getattr(pathk, tokenk)
108 'Path does not exist -- while accessing "'
118 Check for the existence in target of a value located at path (available at
119 target.path1. ... .pathn).
122 if isinstance(path, str):
123 path = path.split(
".")
124 for tokenk
in path[0:-1]:
125 print(
"check ", tokenk)
126 privateName = tokenk +
"_obj"
127 if privateName
not in pathk.__dict__:
129 pathk = getattr(pathk, privateName)
131 privateName = name +
"_obj"
132 return (name
in pathk.__dict__) | (privateName
in pathk.__dict__)