Нам бы догнать как абстрактная модель прибора выглядит вообще. Если подходить формально, то
import datetime
class DreamDevice(object):
def __init__(self):
self.started_at = datetime.datetime.now()
self.exposition = 0
self.config = {
'develop_time': 5, # время на проявку снимка, в сек
'default_exposition': 0.325, # экспозиция по умолчанию
}
def __shoot(self):
return "Make a roentgenogram with expo %.3f seconds and such config: %s" % (self.exposition, self.config)
def expose(self, exposition=None):
if exposition is None:
exposition = self.config['default_exposition']
# делаем снимок с экспозицией exposition
self.started_at = datetime.datetime.now()
self.exposition = exposition
# каким-то образом запускается съемка
self.__roentgenogram = self.__shoot()
def is_exposing_now(self):
# тут решаем, идет съемка или нет
return datetime.datetime.now() < (self.started_at + datetime.timedelta(0,self.exposition))
def get_roentgenogram(self):
if datetime.datetime.now() < (self.started_at + datetime.timedelta(0,self.exposition) + datetime.timedelta(0,self.config['develop_time'])):
raise RuntimeError("Roentgenogram is not ready")
else:
return self.__roentgenogram
>> device = DreamDevice()
>>> device.config
{'default_exposition': 0.32500000000000001, 'develop_time': 5}
>>> device.config['develop_time'] = 12
>>> device.is_exposing_now()
False
>>> device.expose(45)
>>> device.is_exposing_now()
True
>>> device.get_roentgenogram()
Traceback (most recent call last):
File "<pyshell#17>", line 1, in -toplevel-
device.get_roentgenogram()
File "/home/j2a/tmp/dream_device.py", line 32, in get_roentgenogram
raise RuntimeError("Roentgenogram is not ready")
RuntimeError: Roentgenogram is not ready
>>> device.get_roentgenogram()
"Make a roentgenogram with expo 45.000 seconds and such config: {'default_exposition': 0.32500000000000001, 'develop_time': 12}"
Last edited March 12, 2007, 5:30 a.m.
Be easy, stay cool