Вы не авторизованы и не можете видеть весь контент сайта. Хотите авторизоваться?
Данный сайт использует куки. Это позволяет нам анализировать взаимодействие посетителей с сайтом и делать его лучше. Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie.
Вы можете установить этой сайт в виде иконки на рабочем столе
и использовать его как нативное приложение.
Хотите установить это веб-приложение?
Python для начинающих 012
<% normalizedTimer %>
Что выведет данный код:
```python
X = 1
def nester():
X = 2
class C:
X = 3
def method1(self):
print('вывод1 =', X, self.X)
def method2(self):
X = 4
self.X = 5
print('вывод2 =', X, self.X)
I = C()
I.method1()
I.method2()
nester()
```
Вопрос № 1(Верно)(Неверно)
Ответы:
<pre>
вывод1 = 1 2
вывод2 = 3 5
</pre>
<pre>
вывод1 = 1 3
вывод2 = 2 5
</pre>
<pre>
вывод1 = 3 3
вывод2 = 4 3
</pre>
<pre>
вывод1 = 2 3
вывод2 = 4 5
</pre>
Дан код:
```python
class A:
x = 1
def __init__(self):
self.y = 2
a = A()
```
Какие из следующих выражений вернут True?
Вопрос № 2(Верно)(Неверно)
Ответы:
<pre>
a.x == 1
</pre>
<pre>
a.y == 2
</pre>
<pre>
A.x == 1
</pre>
<pre>
A.y == 2
</pre>
<pre>
a.__dict__['x'] == 1
</pre>
<pre>
a.__dict__['y'] == 2
</pre>
<pre>
A.__dict__['x'] == 1
</pre>
<pre>
A.__dict__['y'] == 1
</pre>
Дан код:
```python
def classtree(cls, indent):
print('.' * indent + cls.__name__)
for supercls in cls.__bases__:
classtree(supercls, indent+3)
def instancetree(inst):
print('Tree of %s' % inst)
classtree(inst.__class__, 3)
def selftest():
class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
class E: pass
class F(D,E): pass
instancetree(F())
selftest()
```
Что не правильно в следующем выводе программы(количество точек - уровень вложенности, три точки - один уровень вложенности)?
<pre>
Tree of <__main__.selftest.<locals>.F object at 0x000001F034417848>
...F
......D
.........B
............A
...............object
.........C
............A
.........E
.........object
</pre>
Вопрос № 3(Верно)(Неверно)
Ответы:
E и D должны быть на одном уровне
A и A должны быть на разных уровнях
После второго вывода класса А, где С наследуется от A должно быть:
<pre>
...............object
</pre>
В конце вывода программы не должно быть
<pre>
.........object
</pre>
Дан код:
```
class A:
x = 1
```
Что здесь означает x = 1?
Вопрос № 4(Верно)(Неверно)
Ответы:
При создании экземпляра класса А будет создаваться атрибут x у этого экземпляра, который
будет доступен через self.x
При создание класса А у него будет создан атрибут x, который будет доступен через A.x, а также через self.x по дереву наследования.
Присвоение x = 1 вызовет ошибку
Присвоение глобальной переменной x значения 1
<pre>
Почему в классе может возникнуть потребность в ручном вызове метода __init__ суперкласса?
</pre>
Вопрос № 5(Верно)(Неверно)
Ответы:
Это всегда нужно делать, поскольку конструктор при создании не вызывается.
Если нужно сбросить параметры экземпляра начального состояния.
Поскольку класс может иметь несколько конструкторов, иногда нужно вызвать конкретный.
Если в классе определяется собственный конструктор, может быть необходимо вызвать конструктор родительского класса.
Предположим мы наследуемся от класса, у которого есть некоторый метод. Как в классе-наследнике дополнить функционал этого метода?
Вопрос № 6(Верно)(Неверно)
Ответы:
Этого нельзя сделать.
Определить метод с таким же названием, но начинающийся с нижнего подчеркивания.
Переопределить этот метод и в нем вызвать Суперкласс.метод(self, ...).
Создать метод с таким же именем, используя декоратор classmethod.
Дан код
```python
class A:
x = 1
def f(self):
x = 2
```
Что происходит на строчке x = 2?
Вопрос № 7(Верно)(Неверно)
Ответы:
Поскольку метод f имеет ту же область видимости, что и класс, атрибут x = 1 переопределяется.
Будет создана глобальная переменная x, со значением 2.
Будет создана переменная x со значением 2 в пространстве имен экземпляра класса, которое отличается от пространства имен класса, поэтому атрибут x = 1 не переопределяется, но через self.x будет доступен атрибут экземпляра.
Создается переменная x со значением 2 в локальной области видимости функции f, которая отличается от локальной области видимости класса, поэтому атрибут x = 1 не переопределяется.
Дан код:
```python
class Number:
def __init__ (self, start):
self.data = start
def __sub__ (self, other) :
# Ваш код
X = Number(5)
Y = X - 2
Y.data
```
<pre>
>>> 3
</pre>
Восстановите пропущенный код.
Вопрос № 8(Верно)(Неверно)
Ответы:
return self.data - self.other
return self.data - other
return Number(self.data - self.other)
return Number(self.data - other)
return other
return 3
Что выведет данный код:
```python
class A:
def __init__(self, x):
self.x = x
def __index__(self):
return self.x // 2
a = A(27)
arr = [i**2 for i in range(20)]
print(int(hex(a), 16))
print(arr[a])
```
Вопрос № 9(Верно)(Неверно)
Ответы:
<pre>
13
13
</pre>
<pre>
IndexError: list index out of range
</pre>
<pre>
'0xd'
169
</pre>
<pre>
13
169
</pre>
<pre>
12
144
</pre>
<pre>
14
196
</pre>
Дан код:
```python
class A:
def __init__(self, x):
self.x = x
def __add__(self, other):
#... some code
a1 = A(2)
a2 = A(3)
b1 = a1.__add__(a2) #1
b2 = a1 + a2 #2
```
Какой наиболее эффективный способ сложения объектов?
(1 или 2)
Вопрос № 10(Верно)(Неверно)
Ответы:
<pre>Первый, поскольку метод __add__ вызывается напрямую </pre>
<pre>Второй, поскольку встроенные операции Python оптимизирует</pre>
<pre>Оба полностью равнозначны</pre>
<pre>Метод __add__ не используется для перегрузки операции сложения</pre>