import sys sys.version_info
Определение итератора:
class MyIter: def __init__(self, start, stop): self.value = start - 1 self.stop = stop def __iter__(self): return self def next(self): self.value += 1 if self.value > self.stop: raise StopIteration return self.value
Работа с итератором:
for i in MyIter (1,5): print i
Вообще, решение проблемы я нашел здесь http://neilconway.org/docs/sequences/. На случай если ссылка будет не доступна напишу самое главное:
Создание таблицы
CREATE TABLE users ( id SERIAL PRIMARY KEY, name TEXT, age INT4 );
SERIAL — аналог auto_increment
Создание записи:
INSERT INTO users (name, age) VALUES ('Mozart', 20);
Объединение 2 словарей:
a.update(b);
Если ключи совпадают, то будет перезаписан значением из b.
Пример:
>>> a={'a':'1','b':'2'} >>> b={'b':'3','c':'4'} >>> a.update(b) >>> a {'a': '1', 'c': '4', 'b': '3'}
Размышления.
Почему в функцию должны передаваться все параметры, а не использовать глобальные? Да потому что если захочешь эту функцию вызвать из другого класса (модуля), то её уже стоит поместить в отдельный модуль, а тут связь с глобальными переменными (переменными класса и т.д.) рушится
Пример:
CREATE OR REPLACE FUNCTION myschema.find_available(num_State integer) RETURNS SETOF integer AS $BODY$ plan0= plpy.prepare("SELECT id,start_available, stop_available FROM "Flat" WHERE state=$1",["integer"]) rv=plpy.execute(plan0,[num_State]) ... BODY$ LANGUAGE 'plpythonu' VOLATILE ...
Выдает сообщение
DETAIL: <type 'exceptions.NameError'>: global name 'num_State' is not defined
Приводим переменную num_State к нижнему регистру ( num_state) и ошибки уже нет.
self.__class__.__name__
— даст имя текущего класса
Делал логирование на сайте, сначала писал код так
a= md5.new("password").digest()
В результате значение «а» принимало бинарный(? незнаю как правильно сказать) вид и нельзя было записать в БД. Решение простое — нужно делать так:
a= md5.new("password").hexdigest()
Значение «а» можно писать в БД
Получение списка предков (родителей, «дедов» и «прадедов») класса при множественном наследовании:
class A(object): pass class B(object): pass class C(A,B): def __init__(self): a=self.__class__.__mro__ print(a) if __name__=='__main__': C()
Получение списка родителей класса при множественном наследовании
class A: pass class B: pass class C(A,B): def __init__(self): print(str(self.__class__.__bases__)) if __name__=='__main__': C()
Свежие комментарии