1. Что будет выведено в результате исполнения программы? Почему?
class A:
def __init__(self, name):
self.name = name
def __del__(self):
print self.name,aa = [A(str(i)) for i in range(3)]
for a in aa:
del a
Вывод узнать легко в любой IDE. Это 2 1 0. Вопрос почему? Исходя из порядка(он если что, обратен созданию), можно догадаться, что тут задействован стек, т.е. работает правило LIFO.
При удалении списка — элементы удаляются в обратном порядке созданию.
Но важно понять, что удаление происходит в нашем случае, всего лишь когда скрипт отработал, а инструкция del тут ни при чём!
Вызов инструкции del рвёт связь имени переменной(в нашем случае a) и данных, находящихся в памяти, т.е. в цикле мы создаём ссылку на элемент списка, дём ей название->a, выводим name элемента и рвём связь. Чтобы отработал магический метод __del__ нужно вызывать del напрямую к элементу, т.е. через индекс, например del a[0]
class A:
def __init__( self ):
self.__value = 1
def getvalue( self ):
return self.__valueclass B( A ):
def __init__( self ):
A.__init__( self )
self.__value = 2
b = B()
print b.getvalue() == b.__value
Ответ: случится Exception, потому что невозможно получить доступ к __value извне класса. Однако самое интересное, здесь другое. В данном случае b.getvalue() возвращает 1, т.к. self.__value различно в каждом контексте. А именно b._A__value и b._B__value!
users UID Name 1 «Вася» 2 «Петя»
messages
UID msg
1 “A”
1 “B”
2 “C”
Напишите SQL-запрос, результатом которого будет таблица из двух полей: «Имя пользователя» и «Общее количество сообщений».
Здесь, могу посоветовать — SELECT INTO
UPD добавил пример)
CREATE TABLE cvc.users( uid INT, name varchar(100) );
CREATE TABLE cvc.messages(
uid INT,
msg varchar(100)
);
INSERT INTO cvc.users (uid, name) VALUES (1, ‘Vasja’), (2, ‘Petja’);
INSERT INTO cvc.messages (uid, msg) VALUES (1, ‘A’), (1, ‘B’), (2, ‘C’);
select name, count(*) as cnt from cvc.users join cvc.messages on users.uid = messages.uid group by users.uid;
select name, count(*) as cnt from cvc.users, cvc.messages where users.uid = messages.uid group by users.uid;
DROP TABLE cvc.users;
DROP TABLE cvc.messages;
Автор: Pavel Petropavlov