Программирование и научные вычисления на языке Python/§15: различия между версиями
Содержимое удалено Содержимое добавлено
LeoMat (обсуждение | вклад) Нет описания правки |
LeoMat (обсуждение | вклад) Нет описания правки |
||
Строка 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>
|