Как говорили другие, первая версия, используя «this», приводит к каждому экземпляру класса A, имеющему собственную независимую копию метода функции «x». Принимая во внимание, что использование «прототипа» будет означать, что каждый экземпляр класса A будет использовать одну и ту же копию метода «x».
Вот некоторый код, чтобы показать эту тонкую разницу:
// x is a method assigned to the object using "this"
var A = function () {
this.x = function () { alert('A'); };
};
A.prototype.updateX = function( value ) {
this.x = function() { alert( value ); }
};
var a1 = new A();
var a2 = new A();
a1.x(); // Displays 'A'
a2.x(); // Also displays 'A'
a1.updateX('Z');
a1.x(); // Displays 'Z'
a2.x(); // Still displays 'A'
// Here x is a method assigned to the object using "prototype"
var B = function () { };
B.prototype.x = function () { alert('B'); };
B.prototype.updateX = function( value ) {
B.prototype.x = function() { alert( value ); }
}
var b1 = new B();
var b2 = new B();
b1.x(); // Displays 'B'
b2.x(); // Also displays 'B'
b1.updateX('Y');
b1.x(); // Displays 'Y'
b2.x(); // Also displays 'Y' because by using prototype we have changed it for all instances
Как отмечали другие, существуют разные причины выбора одного или другого метода. Мой образец просто предназначен, чтобы четко продемонстрировать разницу.
Я использую pydev расширение Eclipse для разработки Python. Мгновенный, работы в Windows и Linux, довольно хорошем отладчике (сопоставимый с отладчиком IDE Java Eclipse). Завершение кода в состоянии наброситься на модули PyQt также.
, Если Вы отсылаете к записи .ui файлы, спокойный Разработчик, который идет с PyQt, достаточен для расположения виджетов, и pyuic4 преобразует их в код Python для Вас (pyuic4, идет с PyQt).
Я нашел eric4 extremly мощный. Это загружает спокойные программы, чтобы сделать, стандартный материал (спокойный разработчик, спокойный лингвист) и его редактор и навыки отладчика очень очень высок.
Я использую расширение pydev для Eclipse для разработки Python. Snappy, работает в Windows и Linux, { {1}} довольно хороший отладчик (сопоставимый с отладчиком Eclipse Java IDE). Автозавершение кода также может быть связано с модулями PyQt.
PyQT может быть проблемой при установке в Eclipse, но когда он настроен, он работает довольно хорошо! На сайте popdevelop есть руководство , в котором показано, как настроить Eclipse в Windows для работы с PyQT, с автозавершением кода и всем остальным.