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

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 171:
* Другой метод или атрибут класса используют <tt>self</tt> в виде <tt>self.name</tt>, где <tt>name</tt> имя этого атрибута или метода.
* <tt>self</tt> в качестве аргумента пропускается при ''вызове'' методов класса
 
 
===Расширение класса===
В классе мы можем иметь так много атрибутов и методов, как захотим, так что давайте добавим новый метод к классу <tt>Y</tt>. Этот метод назовем <tt>formula</tt> он будет выводить стоку, содержащую формулу математической функции ''y''. После этой формулы мы выводим значение ''v0'':
 
 
<source lang="python">
'v0*t - 0.5*g*t**2; v0=%g' % self.v0
</source>
 
 
где <tt>self</tt> это экземпляр класса <tt>Y</tt>. Вызов <tt>formula</tt> не требует никаких аргументов:
 
 
<source lang="python">
print y.formula()
</source>
 
 
Однако, из правил о <tt>self</tt> мы помним, что хотя метод <tt>formula</tt> при вызове и не требует никаких аргументов, но при определении мы должны передать ему аргумент <tt>self</tt>:
 
 
<source lang="python">
def formula(self):
'v0*t - 0.5*g*t**2; v0=%g' % self.v0
</source>
 
 
И теперь наш класс целиком выглядит так:
 
 
<source lang="python">
class Y:
def __init__(self, v0):
self.v0 = v0
self.g = 9.81
 
def value(self, t):
return self.v0*t - 0.5*self.g*t**2
 
def formula(self):
'v0*t - 0.5*g*t**2; v0=%g' % self.v0
</source>