игра брюс 2048
Главная / Программирование / Язык программирования Python / Тест 4

Язык программирования Python - тест 4

Упражнение 1:
Номер 1
Что представляет собой объектно-ориентированная программа с точки зрения теории ООП?

Ответ:

 (1) набор инструкций для построения объектов 

 (2) набор объектов, которые посылают друг другу сообщения 

 (3) декларации типов объектов 

 (4) декларации классов объектов 


Номер 2
Выберите правильные (с точки зрения теории ООП) утверждения:

Ответ:

 (1) все объекты одного типа могут принимать одни и те же сообщения 

 (2) все объекты одного типа принадлежат одному классу 

 (3) каждый объект имеет тип 


Номер 3
Разбиение программы на объекты называется:

Ответ:

 (1) абстракцией 

 (2) декомпозицией 

 (3) инкапсуляцией 

 (4) полиморфизмом 


Номер 4
Сокрытие информации о внутреннем устройстве объекта, при котором вся работа с объектом ведется только через общедоступный интерфейс называется

Ответ:

 (1) абстракцией 

 (2) декомпозицией 

 (3) инкапсуляцией 

 (4) агрегацией 


Номер 5
Что из нижеперечисленного является объектом в Python?

Ответ:

 (1) функция 

 (2) метод 

 (3) класс 

 (4) оператор 


Упражнение 2:
Номер 1
Какие из перечисленных действий можно выполнить над любым объектом obj в языке Python 2.4?

Ответ:

 (1) print id(obj) 

 (2) print obj 

 (3) hash(obj) 

 (4) not obj 


Номер 2
Какие из перечисленных действий можно выполнить над любым объектом obj в языке Python 2.4?

Ответ:

 (1) print repr(obj)  

 (2) del obj  

 (3) isinstance(w, obj)  

 (4) len(obj)  


Номер 3
Как узнать, ссылаются ли два имени (a и b) на один и тот же объект?

Ответ:

 (1) id(a) == id(b) 

 (2) a == b 

 (3) a is b 

 (4) hash(a) == hash(b) 


Номер 4
Объекты a и b принадлежат одному классу C. Какие из следующих выражений будут, скорее всего, иметь значение "истина" сразу после создания?

Ответ:

 (1) isinstance(a, type(b)) 

 (2) issubclass(C, C) 

 (3) dir(a) is dir(b) 

 (4) dir(a) == dir(b) 


Номер 5
Сколько общедоступных методов будет иметь экземпляр класса ABC и что возвратит вызов метода a()?
class A(object): 
  def a(self): return 'a'
class B(object): 
  def b(self): return 'b'  
class C(object): 
  def c(self): return 'c'  

class AB(A, B): 
  def a(self): return 'ab'
class BC(B, C): 
  def a(self): return 'bc'
class ABC(AB, B, C): 
  def a(self): return 'abc'

Ответ:

 (1) 3, возвратит a 

 (2) 3, возвратит ab 

 (3) 3, возвратит abc 

 (4) 5, возвратит a 


Упражнение 3:
Номер 1
 Имеется определение класса:
class CL(object):
  def set_color(self, value): self.__color = value
  def del_color(self): del self.__color
  color = property(lambda self: self.__color,
                   set_color, del_color, "Color property.")
c = CL()
Какие из следующих примеров содержат ошибки?

Ответ:

 (1) c.color = "#ff00ff"; c.color = "#0000ff" 

 (2) del c.color 

 (3) print c.color 

 (4) has_color = hasattr(c, 'color') 


Номер 2
Имеется определение класса:
class CL(object):
  def __init__(self, color):
    self.color = color
  def __str__(self):
    return self.color
c = CL("#ff00ff")
Какие из следующих примеров не содержат ошибки? 

Ответ:

 (1) c.color = "#ff00ff"; c.color = "#0000ff" 

 (2) del c.color 

 (3) print c.color 

 (4) print c 


Номер 3
Имеются следующие определения:
def m1(self):
  print "m1"

class M:
  def m2(self):
    print "m2"

m = M()
Какой из фрагментов кода содержит ошибки?

Ответ:

 (1) m.m1 = m1; m.m1() 

 (2) M.m1 = m1; m.m1() 

 (3) m.m1 = m1; m.m1(m) 

 (4) m.m1 = m.m2; m.m1() 


Номер 4
Имеются следующие определения:
class A:
  def am(self):
    print "am"

class B:
  def bm(self):
    print "bm"

a = A()
b = B()
Какой из фрагментов кода содержит ошибки?
 

Ответ:

 (1) a.am = b.bm; a.bm() 

 (2) a.am = b.bm; a.am() 

 (3) A.am = b.bm; a.am() 

 (4) A.am = B.bm; a.am() 


Номер 5
Имеются следующие определения:
def aa(x):
  class X:
    def m(self):
      return x
  return X

a = aa(1)()
Какие из фрагментов кода содержат ошибки?

Ответ:

 (1) print a.m() 

 (2) b = aa()() 

 (3) print a() 


Упражнение 4:
Номер 1
Укажите набор атрибутов, которые считаются общедоступными, для экземпляров следующего класса:
class Example:
  def __init__(self, x, y):
    xy = x, y
    self.position = xy
    self._length = self.__len(x, y)
  def __len(self, x, y):
    return abs(x) + abs(y)
  def getlen(self):
    return self._length

Ответ:

 (1) getlen, _length, position, __len, xy 

 (2) getlen, position 

 (3) getlen, _length, position 

 (4) position 


Номер 2
Укажите набор атрибутов, которые считаются приватными, для экземпляров следующего класса:
class Ex:
  def __init__(self, x, y):
    xy = x, y
    self.position = xy
    self._length = self.__len(x, y)
  def __len(self, x, y):
    return abs(x) + abs(y)
  def getlen(self):
    return self._length

Ответ:

 (1) _length, __len 

 (2) _length, __len, position 

 (3) __len, xy, x, y, self 

 (4) xy, x, y, self, _length, position 


Номер 3
Имеется определение класса:
class Ex:
  def __init__(self, x, y):
    xy = x, y
    self.position = xy
    self._length = self.__len(x, y)
  def __len(self, x, y):
    return abs(x) + abs(y)
  def getlen(self):
    return self._length
p = Ex(1, 2)
Какой из вариантов его применения не допустим в программах на Python, которые пользуются экземплярами класса Ex?

Ответ:

 (1) print p.position 

 (2) print p.getlen() 

 (3) print p.__len(1,2) 


Номер 4
Имеется определение класса:
class Line:
  def __init__(self, (x, y), (x1, y1)):
    self._b = (x, y)
    self._e = (x1, y1)
  def length(self):
    import math
    return math.sqrt((self._b[0]-self._e[0])**2 + (self._b[1]-self._e[1])**2)
  def begin(self):
    return self._b
  def end(self):
    return self._e
    
l = Line((1, 2), (-1, 4))
Какие из вариантов его применения не допустимы в программах на Python, которые пользуются экземплярами класса Line?

Ответ:

 (1) print l.length() 

 (2) print l._b, "-", l._e 

 (3) print l.x, l.x1 

 (4) print l.begin(), l.end() 


Номер 5
Имеется определение класса:
class Line:
  def __init__(self, (x, y), (x1, y1)):
    self._b = (x, y)
    self._e = (x1, y1)
  def length(self):
    import math
    return math.sqrt((self._b[0]-self._e[0])**2 + (self._b[1]-self._e[1])**2)

class Triangle:
  def __init__(self, p1, p2, p3):
    self._a, self._b, self._c = p1, p2, p3
  def p(self):
    return Line(self._a, self._b).length() + Line(self._a, self._c).length() 
+ Line(self._b, self._c).length()
  def as_lines(self):
    return Line(self._a, self._b), Line(self._a, self._c), Line(self._b, 
self._c)
    
tr = Triangle((1, 2), (-1, 4), (0, 0))
Какие из вариантов его применения допустимы в программах на Python, которые пользуются экземплярами класса Triangle?

Ответ:

 (1) print Line(tr._a + tr._b).length() 

 (2) print tr.as_lines()[0].length() 

 (3) print tr.p() 

 (4) print _a, _c 


Упражнение 5:
Номер 1
Как называется отношение, которое имеют следующие два класса:
class A(object):
  def __init__(self, x):
    self._mydata = B(x)

class B(object):
  def __init__(self, x):
    self._mydata = x

Ответ:

 (1) наследование. A получается наследованием B 

 (2) ассоциация. Экземпляр A содержит ссылки на экземпляры B 

 (3) метакласс. B является метаклассом для A 

 (4) метакласс. A является метаклассом для B 


Номер 2
Как называется отношение, которое имеют следующие два класса:
class A(object):
  def __init__(self, x):
    self._mydata = x
  def m1(self):
    raise NotImplementedError

class B(A):
  def __init__(self, x):
    super(B, self).__init__(x)
  def m1(self):
    return self._mydata

Ответ:

 (1) наследование. A получается наследованием B 

 (2) наследование. B получается наследованием A 

 (3) агрегация. Экземпляры A содержат экземпляры класса B 

 (4) ассоциация. Экземпляры A содержат ссылки на экземпляры класса B 


Номер 3
Как называется отношение, которое имеют между собой следующие два класса:
class A(type):
  def __init__(cls, name, bases, dict):
    return super(A, cls).__init__(cls, name, bases, dict)

B = A("B", (), {})

Ответ:

 (1) ассоциация. A содержит ссылки на B  

 (2) наследование. B получается наследованием A 

 (3) метакласс. A является метаклассом для B  

 (4) метакласс. B является метаклассом для A 


Номер 4
Как называется отношение, которое имеют между собой следующие два класса:
class A(object):
  def __init__(self, **atts):
    self._atts = atts
  def __repr__(self):
    return ":" + str(self._atts)

class B(list):
  def __init__(self, *params):
    super(B, self).__init__(params)

Ответ:

 (1) ассоциация. Экземпляры A содержат ссылки на экземпляры B  

 (2) ассоциация. Экземпляры B содержат ссылки на экземпляры A  

 (3) агрегация. Экземпляры B содержат экземпляры A  

 (4) классы не связаны между собой 


Номер 5
Объект какого из перечисленных типов можно передавать в качестве параметра функции f()?
def f(x):
  l = len(x)
  return x[l-1]

Ответ:

 (1) int 

 (2) str 

 (3) tuple 

 (4) bool 


Упражнение 6:
Номер 1
Какую роль играет xx в следующей Python-программе:
def xx(func):
  class X(object):
    pass
  setattr(X, func.__name__, func)
  return X

Ответ:

 (1) функция-фабрика 

 (2) функция-фабрика классов 

 (3) метакласс 

 (4) метод класса 


Номер 2
Какую роль играет xx в Python-программе:
class M(object):
  def xx(self):
    print "self:", self

Ответ:

 (1) функция-фабрика 

 (2) статистический метод 

 (3) метод экземпляра класса 

 (4) метафункция 


Номер 3
Какую роль играет xx в Python-программе, и чему должен быть равен XXX:
class A(object):
  def xx():
    return A.__name__
  xx = XXX(xx)

Ответ:

 (1) метод, XXX равен instancemethod 

 (2) статический метод, XXX равен staticmethod 

 (3) метод класса, XXX равен classmethod 

 (4) функция, XXX можно опустить 


Номер 4
Какую роль играет xx в Python-программе, и чему должен быть равен XXX:
class A(object):
  def xx(cls, x):
    ...
  xx = XXX(xx)

Ответ:

 (1) метод, XXX равен instancemethod 

 (2) статический метод, XXX равен staticmethod 

 (3) метод класса, XXX равен classmethod 

 (4) функция, XXX можно опустить 


Номер 5
Какую роль играет xx в Python-программе:
class A:
  ...
class B:
  ...

...
a = A()
b = B()
c = xx(a, b)
b1 = B()
c1 = xx(b1, b)

Ответ:

 (1) метод 

 (2) мультиметод 

 (3) функция 

 (4) класс 


Упражнение 7:
Номер 1
Класс имеет метод __call__(). Какому классу он может "подражать" и как пользоваться этим методом?
class A:
  #...
  def __call__(self, *params, **kws):
    #...
a = A()

Ответ:

 (1) функция. Пользоваться можно так: b = a(2,3,4) 

 (2) кодовый объект. Пользоваться можно так: eval(a) 

 (3) список. Пользоваться можно так: a[0] = 5 

 (4) кортеж. Пользоваться можно так: a = (1, 2, 3) 


Номер 2
Класс имеет методы __iter__() и next(). О чем это говорит и как пользоваться этим методом?
class A:
  #...
  def __iter__(self): 
    #...
  def next(self):
    #...
a = A(1, 2, 3)

Ответ:

 (1) последовательность. Пользоваться можно так: print a[2] 

 (2) нет особого названия. Пользоваться можно так: print a.next() 

 (3) итератор. Пользоваться можно так: for i in a: print i 

 (4) генератор. Пользоваться можно так: for i in a(): print i 


Номер 3
Класс имеет методы  __rshift__, __rrshift__ и __irshift__. Как правильно пользоваться этими методами?
class X:
  def __rshift__(self, opd):
    #...
  def __rrshift__(self, opd):
    #...
  def __irshift__(self, opd):
    #...
x = X()

Ответ:

 (1) print >> x, 10 

 (2) x <<= 1 

 (3) y = x >> 2 

 (4) y = 2 >> x 


Номер 5
Какие методы необходимо иметь x для задания следующих действий:
>>> x = X(0)
>>> print x + 10
10
>>> print x - 23
-23
>>> print x >> 2
0

Ответ:

 (1) __init__, __add__, __radd__, __sub__, __rsub__, __rshift__, __rrshift__ 

 (2) __init__, __add__, __sub__, __rshift__ 

 (3) __init__, __add__, __sub__, __rshift__, __str__, __repr__ 

 (4) __init__, __add__, __sub__, __rshift__, __str__ 




Главная / Программирование / Язык программирования Python / Тест 4