Тест "Объектно-ориентированное программирование на Python"
Список вопросов теста
Вопрос 1
Конструктор класса задается методом с именем:
Варианты ответов
- __new__
- __init__
- __construct__
- имя конструктора совпадает с именем класса
Вопрос 2
Если в классе определен деструктор с двумя и более параметрами, то:
Варианты ответов
- будет сгенерирована ошибка, т.к. деструктор не может иметь более одного параметра
- ) будет сгенерировано предупреждение, и такой деструктор должен вызываться только явно
- не будет сгенерировано ни предупреждения, ни ошибки; при неявном вызове деструктора значение параметра будет равно None
- предупреждения не будет сгенерировано, но такой деструктор должен вызываться только явно
Вопрос 3
Если в классе определены два метода с одинаковыми именами и разными списками параметров, то:
Варианты ответов
- ) при выполнении скрипта будет сгенерирована ошибка
- будет сгенерировано предупреждение, второе определение заменит первое
- не будет сгенерировано ни предупреждения, ни ошибки; второе определение заменит первое
- не будет сгенерировано ни предупреждения, ни ошибки; вызов того или иного метода будет зависеть от типа и количества указанных при вызове параметров
Вопрос 4
Значением поля класса по умолчанию может являться
Варианты ответов
- значение переменной
- константа
- результат вызова функции
- возможность указания значений полей по умолчанию в Python не предусмотрена
Вопрос 5
В языке Python объектами являются:
Варианты ответов
- экземпляры классов и переменные
- экземпляры классов, переменные и функции
- экземпляры классов, классы и переменные
- все типы данных
Вопрос 6
Деструктор класса задается методом с именем:
Варианты ответов
- __del__
- delete
- __destr__
- __destruct__
Вопрос 7
Укажите результат выполнения скрипта:
class Foo:
def __init__(self):
print ('constructor', end=' ')
self.__del__(self)
def __del__(self):
print ('destructor', end=' ')
obj = Foo()
Варианты ответов
- constructor
- destructor
- constructor destructor
- скрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 8
Укажите результат выполнения скрипта:
x=0
class Foo:
count=x
def __init__(self):
self.count+=1
def __del(self):
self.count+=1
obj = Foo()
print (obj.count)
Варианты ответов
- 0
- 1
- 2
- пустая строка
- скрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 9
Укажите результат выполнения скрипта:
class Foo:
count=0
def __init(self):
self.count+=1
obj = Foo()
print (obj.count)
Варианты ответов
- 0
- 1
- пустая строка
- скрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 10
Укажите результат выполнения скрипта:
class Foo:
def foo(self):
print ('1')
def __init__(self):
print ('2')
x = Foo()
Варианты ответов
- 1
- 2
- 2;1
- пустая строка
- скрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 11
Укажите результат выполнения скрипта:
class Foo:
def foo(self):
print ('foo')
del self
def __del__(self):
print ('del')
obj = Foo()
obj.foo()
Варианты ответов
- foo
- del
- del foo
- foo del
Вопрос 12
Укажите результат выполнения скрипта:
class Foo:
def __init__(self):
print ('construct')
del self
obj = Foo()
if obj: print ('exist')
Варианты ответов
- construct
- exist
- construct exist
- скрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 13
Укажите результат выполнения скрипта:
class Foo (object):
obj=0
def __new__(cls,*dt,**mp):
return object.__new__(cls,*dt,**mp).obj
def __add__(self, x):
return self.obj+2*x
o = Foo()
o+=1
print (o)
Варианты ответов
- 0
- 1
- 2
- скрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 14
Укажите результат выполнения скрипта:
class Foo (object):
def __new__(cls,*dt,**mp):
print ('new', end=' ')
def __init__(self):
print ('init', end=' ')
o = Foo()
Варианты ответов
- new
- init
- new init
- скрипт не будет выполнен, т.к. код содержит ошибки
- init new
Вопрос 15
Укажите результат выполнения скрипта:
class Foo (object):
obj=0
def __new__(cls,*dt,**mp):
print (cls, end=' ')
return object.__new__(cls,*dt,**mp).obj
def __init__(self):
self.obj+=2
print (self, end=' ')
def __str__(self, x):
return obj
o = Foo()
print (o, end=' ')
Варианты ответов
- 0 2 2
- 2 2
-
0 -
2 2 - скрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 16
Укажите результат выполнения скрипта:
class Foo (object):
obj=0
def __new__(cls,*dt,**mp):
print ('1')
return object.__new__(cls,*dt,**mp).obj
def __init__(self):
print ('2')
o = Foo()
print (type (o))
Варианты ответов
- 1 2
- 2
- 1
- 2 1
- cкрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 17
Укажите результат выполнения скрипта:
class Foo (object):
obj=0
def __new__(cls,*dt,**mp):
obj=1
def __init__(self):
self.obj=2
o = Foo()
print (o.obj)
Варианты ответов
- 0
- 1
- 2
- cкрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 18
Укажите результат выполнения скрипта:
class Foo (object):
obj=0
def __new__(cls,*dt,**mp):
cls.obj+=1
return object.__new__(cls,*dt,**mp)
def __init__(self):
self.obj=self+2
def __add__(self, x):
return self.obj+2*x
o = Foo()
print (o.obj)
Варианты ответов
- 3
- 4
- 5
- 6
- cкрипт не будет выполнен, т.к. код содержит ошибки
Вопрос 19
Файл foo.py содержит следующий код:
class Foo(object):
def __init__ (self, x): self.val=x
def __str__ (self): return str(self.val)
Скрипт a.py содержит следующий код:
import pickle, foo
o = foo.Foo(list(range(4)))
with open('temp.pkl', 'wb') as f:
pickle.dump(o, f, pickle.HIGHEST_PROTOCOL)
Скрипт b.py содержит следующий код:
import pickle
with open('temp.pkl', 'r') as f:
x = pickle.load(f)
print (x)
Укажите результат последовательного выполнения скриптов a.py и b.py:
Варианты ответов
- пустая строка
- [ ]
- [0, 1, 2, 3]
- скрипт b.py не будет выполнен, т.к. код содержит ошибки
Вопрос 20
Укажите результат выполнения скрипта:
import pickle
a = [1, 2]
b = [3, 4]
a.append(b)
b.append(a)
with open('temp.pkl', 'w') as f:
pickle.dump(a, f, pickle.HIGHEST_PROTOCOL)
with open('temp.pkl', 'r') as f:
c = pickle.load(f)
with open('temp.pkl', 'w') as f:
pickle.dump(b, f, pickle.HIGHEST_PROTOCOL)
with open('temp.pkl', 'r') as f:
d = pickle.load(f)
print (c, d)
Варианты ответов
- False False
- False True
- True False
- True True
- скрипт не будет выполнен, т.к. код содержит ошибки