Программирование и научные вычисления на языке Python/§15: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 345:
дает 5. Это значение <tt>v0</tt> используется пока новый вызов не изменит его.
 
Возникающее исключение <tt>AttributeError</tt> следовало бы учесть в теле класса (а еще точнее методе <tt>value</tt>) с помощью блока <tt>try-except</tt>:
 
 
<source lang="python">
class Y2:
def value(self, t, v0=None):
if v0 is not None:
self.v0 = v0
g = 9.81
try:
value = self.v0*t - 0.5*g*t**2
except AttributeError:
msg = 'You cannot call value(t) without first '
'calling value(t, v0) to set v0'
raise TypeError(msg)
return value
</source>
 
 
Конечно, класс <tt>Y</tt> это лучшая реализация, чем <tt>Y2</tt>, поскольку имеет более простую форму. Как уже отмечалось, использование конструктора это хорошая привычка программирования, конструктор осуществляет удобную связь между «внешним миром» и классом. Цель нашего класса <tt>Y2</tt> только в том чтобы показать что Python обладает большой гибкостью к определению атрибутов и что вообще нет специальных требований ''что'' именно класс должен содержать.