Язык Java и Python являются хорошими примерами, иллюстрирующими это.В Python объект передается явно всякий раз, когда определен метод класса:
class Example(object):
def method(self, a, b):
print a, b
# The variable self can be used to access the current object
Здесь объект self
явно передается в качестве первого аргумента.Это означает, что
e = Example()
e.method(3, 4)
фактически совпадает с вызовом method(e, 3, 4)
, если method
была функцией.
Однако в Java первый аргумент не упоминается явно:
public class Example {
public void method(int a, int b) {
System.out.println(a + " " + b);
// The variable this can be used to access the current object
}
}
В Java это будет:
Example e = Example();
e.method(3, 4);
Экземпляр e
также передается в method
, но специальная переменная this
может использоваться для доступа к нему.
Конечно, для функций каждый аргумент передается явно, потому что каждый аргумент упоминается как в определении функции, так и в том месте, где вызывается функция.Если мы определим
def func(a, b, c):
print a, b, c
, то мы можем вызвать его с помощью func(1, 2, 3)
, что означает, что все аргументы явно переданы.