Уведомления

Группа в Telegram: @pythonsu

#1 Март 15, 2012 08:18:12

Junior
От:
Зарегистрирован: 2011-09-22
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Автоматизация записи

Делаю на досуге приложение для рассчета силовых трансформаторов. Процесс рассчета итеративный: если на одном из этапов произошло непопадание в технические условия, то нужно вернуться к одному из предыдущих этапов и попробовать другой вариант.
План примерно такой:
# Выражаюсь метаформами

Вначале мы имеем изделие, которое, проходя через все стадии рассчета, постепенно обрастает данными.
Стадии выглядят примерно так:

Вариант1, Вариант2, …, ВариантN
______стадия_рассчета_1_________


Вариант1, Вариант2, …, ВариантN
______стадия_рассчета_2_________



Вариант1, Вариант2, …, ВариантN
______стадия_рассчета_N_________

Информация о том, что было изменено на стадии, сколько ещё вариантов изменения осталось и как эта стадия называется записывается в журнал Изделия. Беда в том, что из-за недостатка моих знаний эту информацию приходится записывать вручную. Это несколько некошерно, так как я чувствую, что есть способ делегировать эти полномочия программе. Например с помощью декораторов.
Стадии реализованы в виде типовых классов. В каждом классе есть методы .count() и .to_journal().
Вот пример простой формулы-стадии (прототип).

class r1_S:
"""Мощность одной фазы и одного стержня"""
def __init__(self, product):
self.name = 'r1_S'
self.product = product
# Данные, которые используются в этой формуле
self.S = product.ut['S_kVA'] # Полная мощность
self.m = product.ut['phase_num'] # Число фаз
def count(self):
# Вычисление
self.Sf = float(self.S) / self.m
# Запись результатов
self.product.math['Sf'] = self.Sf
def text(self):
# Текстовая аннотация
self.product.text += [
"""Мощность одной фазы и одного стержня:
S_ф = S\' = S/m = {0}/{1} = {2}""".format(self.S, self.m, self.Sf)]
def to_journal(self):
# Запись в журнал Изделия
self.product.journal.append( {'handler_name': self.name, 'Sf': self.Sf} )
Вопрос:
Как автоматизировать запись в журнал данных, которые получаются в методе .count()?
То есть избавиться от этого метода
def to_journal(self):
# Запись в журнал Изделия
self.product.journal.append( {'handler_name': self.name, 'Sf': self.Sf} )



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version