В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Мне нравится заключать Дзэн Peters в кавычки Python. "Явный лучше, чем неявный".
В Java и C++, 'this.
' может быть выведен, кроме тех случаев, когда у Вас есть имена переменной, которые лишают возможности выводить. Таким образом, Вы иногда нуждаетесь в нем и иногда делаете нет.
Python выбирает делать вещи как это явными, а не на основе правила.
Кроме того, так как ничто не подразумевается или предполагается, части реализации представлены. self.__class__
, self.__dict__
и другие "внутренние" структуры доступны очевидным способом.
Это должно минимизировать различие между методами и функциями. Это позволяет Вам легко генерировать методы в метаклассах или добавлять методы во времени выполнения к существующим ранее классам.
, например,
>>> class C(object):
... def foo(self):
... print "Hi!"
...
>>>
>>> def bar(self):
... print "Bork bork bork!"
...
>>>
>>> c = C()
>>> C.bar = bar
>>> c.bar()
Bork bork bork!
>>> c.foo()
Hi!
>>>
Это также (насколько я знаю) делает реализацию времени выполнения Python легче.
Я предлагаю, чтобы читал блог Guido van Rossum по этой теме - , Почему явный сам должен остаться .
, Когда определение метода украшено, мы не знаем, дать ли автоматически его 'сам' параметр или нет: декоратор мог превратить функцию в статический метод (который имеет не 'сам'), или метод класса (который имеет забавный вид сам, который относится к классу вместо экземпляра), или она могла сделать что-то совершенно другое (это тривиально, чтобы записать декоратору, который реализует '@classmethod' или '@staticmethod' в чистом Python). Нет никакого пути, не зная то, что делает декоратор, обеспечить ли метод, определяемый неявным 'сам' аргумент или нет.
я отклоняю взломы как специальное преобразование регистра '@classmethod' и '@staticmethod'.
Python не вынуждает Вас при использовании "сам". Можно дать его безотносительно имени, которое Вы хотите. Просто необходимо помнить, что первым аргументом в заголовке определения метода является ссылка на объект.
Существует также другой очень простой ответ: согласно дзэн python, "явный лучше, чем неявный".