У меня есть это:
var Test = new function() {
this.init = new function() {
alert("hello");
}
this.run = new function() {
// call init here
}
}
Я хочу звонить init
в рамках выполнения. Как я делаю это?
Если вы хотите прочитать текст 500:
request = urllib2.Request(url, data, headers)
try:
resp = urllib2.urlopen(request)
print resp.read()
except urllib2.HTTPError, error:
print "ERROR: ", error.read()
В вашем случае вам не нужно наращивать запрос. Просто сделайте
try:
resp = urllib2.urlopen(url)
print resp.read()
except urllib2.HTTPError, error:
print "ERROR: ", error.read()
так, вы не переопределяете urllib2.HTTPError, вы просто обрабатываете исключение.
-121--866437- У вас есть словарь, в котором несколько ключей сопоставляются с одним и тем же значением. Нет встроенной структуры данных, поддерживающей нужную операцию, но ее легко представить как Dictionary {последовательность, HashSet {string}}
в .NET:
static void AddNames(Dictionary<string, HashSet<string>> map, params string[] names)
{
for (int i = 0; i < names.Length; i++)
{
HashSet<string> value;
if (!map.TryGetValue(names[i], out value))
{
value = new HashSet<string>();
map.Add(names[i], value);
}
for (int j = 0; j < names.Length; j++)
{
value.Add(names[j]);
}
}
}
static void Main(string[] args)
{
Dictionary<string, HashSet<string>> names = new Dictionary<string,HashSet<string>>();
AddNames(names, "Chris", "Christopher");
AddNames(names, "Christina", "Chrissy", "Chris");
HashSet<string> relatedToChris = names["Chris"]; // gets "Chris", "Christina", "Chrissy", "Christopher";
HashSet<string> namesRelatedToChristinia = names["Christina"]; // gets "Christina", "Chrissy", "Chris";
}
Вы можете представить свою структуру данных как направленный график, где каждый узел имеет ребро, связанное с его связанным именем. Так как есть n ^ 2 ребер, словарь требует O (n ^ 2) времени для вставки и памяти. Его невозможно сократить время поиска до чего-то лучшего.
К счастью, поскольку он реализован в виде словаря, поиск продолжается как O (1). Удалено O (m), где m - количество значений, связанных с ключом.
-121--3753593- Используйте this.init ()
, но это не единственная проблема. Не вызывайте новые внутренние функции.
var Test = new function() {
this.init = function() {
alert("hello");
};
this.run = function() {
// call init here
this.init();
};
}
Test.init();
Test.run();
// etc etc
В основном имеется словарь, в котором несколько ключей соответствуют одному и тому же значению. Нет встроенной структуры данных, поддерживающей нужную операцию, но ее легко представить как Dictionary {последовательность, HashSet {string}}
в .NET:
static void AddNames(Dictionary<string, HashSet<string>> map, params string[] names)
{
for (int i = 0; i < names.Length; i++)
{
HashSet<string> value;
if (!map.TryGetValue(names[i], out value))
{
value = new HashSet<string>();
map.Add(names[i], value);
}
for (int j = 0; j < names.Length; j++)
{
value.Add(names[j]);
}
}
}
static void Main(string[] args)
{
Dictionary<string, HashSet<string>> names = new Dictionary<string,HashSet<string>>();
AddNames(names, "Chris", "Christopher");
AddNames(names, "Christina", "Chrissy", "Chris");
HashSet<string> relatedToChris = names["Chris"]; // gets "Chris", "Christina", "Chrissy", "Christopher";
HashSet<string> namesRelatedToChristinia = names["Christina"]; // gets "Christina", "Chrissy", "Chris";
}
Вы можете представить свою структуру данных как направленный график, где каждый узел имеет ребро, связанное с его связанным именем. Так как есть n ^ 2 ребер, словарь требует O (n ^ 2) времени для вставки и памяти. Его невозможно сократить время поиска до чего-то лучшего.
К счастью, поскольку он реализован в виде словаря, поиск продолжается как O (1). Удалено O (m), где m - количество значений, связанных с ключом.
-121--3753593- Используйте this.init ()
, но это не единственная проблема. Не вызывайте новые внутренние функции.
var Test = new function() {
this.init = function() {
alert("hello");
};
this.run = function() {
// call init here
this.init();
};
}
Test.init();
Test.run();
// etc etc
-121--3147222- var Test = function() {
this.init = function() {
alert("hello");
}
this.run = function() {
this.init();
}
}
Если я не пропущу что-то здесь, вы можете удалить «новый» из вашего кода.
Попробуйте,
var Test = function() {
this.init = function() {
alert("hello");
}
this.run = function() {
// call init here
this.init();
}
}
//creating a new instance of Test
var jj= new Test();
jj.run(); //will give an alert in your screen
Спасибо.