Как да генерирам свойства в python с помощта на метаклас? Имам някои записи с данни, чиито полета имат някакви връзки между тях. и бих искал да имам всеки запис като тип (клас) и автоматично да генерирам тези свойства и отношения.
Искам да посоча тази релация като структура от данни (да кажем dict) и автоматично да генерирам класове със свойства
Record 1
Field description
----------------------------
numOfPin no# of following pin array
pin_array array with numOfpin elements
read_result if opt_flag bit 0 is set, invalid. ignore this value
opt_flag ...
Record 2
....
Редактиране: за изясняване.. Логиката за свойства за липсващо/невалидно поле и незадължителен флаг е една и съща за всички записи. Така че бих искал да абстрахирам това в мета-клас.
например в код на псевдо питон:
record1_spec = { 'numOfpin', ('pin_array','numOfPin'),
'opt_flag', ('read_result','opt_flag') }
record2_spec = { 'numOfsite', ('site_array','numOfsite'),
'opt_flag', ('test_result','opt_flag') }
class MetaClass:
getter_generator( ele, opt ):
if opt : return ele
else return None
get class name (eg. record1) then fetch record_spec to create class
for ele in record_spec:
if ele is tuple type: # relation between field
class.attribute[ele[0]] = getter_generator(ele[0], ele[1])
class record1(metaclass = Metaclass):
...
Тогава класът record1
ще има всички свойства, дефинирани в record1_spec
. Логиката е, че ако е зададено поле за опция, някои свойства връщат подходяща стойност.
class record1(metaclass = Metaclass):
. Не ми е ясно какви точно свойства искате автоматично да се генерират и добавят към него (както и точно какви действия изпълняват). - person martineau   schedule 19.07.2018