Вы не авторизованы и не можете видеть весь контент сайта. Хотите авторизоваться?
Данный сайт использует куки. Это позволяет нам анализировать взаимодействие посетителей с сайтом и делать его лучше. Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie.
Вы можете установить этой сайт в виде иконки на рабочем столе
и использовать его как нативное приложение.
Хотите установить это веб-приложение?
Python для начинающих 016
<% normalizedTimer %>
Что выведет код?
```python
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
person = Person('Jone')
print(Person.name.fget(person) == person.name)
```
Вопрос № 1(Верно)(Неверно)
Ответы:
True
False
AttributeError
TypeError
Что выведет код?
```python
class adder:
def __init__(self, value=0):
self.data = value
def __add__(self, other):
self.data += other
class addrepr(adder) :
def __repr__ (self):
return 'addrepr(%s)' %self.data
x = addrepr(2)
x + 1
print(x)
```
Вопрос № 2(Верно)(Неверно)
Ответы:
2
3
<__main__.adder object at 0x0000026116AD6048>
addrepr(2)
addrepr(3)
TypeError: unsupported operand
Как вызвать метод родительского класса?
```python
class A:
def spam(self):
print('A.spam')
class B(A):
def spam(self):
print('B.spam')
# ваш код
```
Вопрос № 3(Верно)(Неверно)
Ответы:
parent().spam()
self.parent.spam()
super().spam()
этого нельзя сделать
Что выведет код?
```python
class A:
def __init__(self):
self.x = 0
class B(A):
def __init__(self):
super().__init__()
self.y = 1
b = B()
print(b.x, b.y)
```
Вопрос № 4(Верно)(Неверно)
Ответы:
1
1 1
0 1
None
AttributeError
Что выведет код?
```python
class A:
def __repr__(self):
return "repr"
def __str__(self):
return "str"
a = A()
print(a, repr(a), str(a))
```
Вопрос № 5(Верно)(Неверно)
Ответы:
str str str
repr str repr
repr repr str
str repr str
str repr repr
repr repr repr
Что выведет код?
```python
class A:
def __repr__(self):
return "repr"
def __str__(self):
return "str"
a = A()
print([a, a])
```
Вопрос № 6(Верно)(Неверно)
Ответы:
[str str]
[repr, repr]
[str]
[repr]
Ничего из вышеперечисленного
Что выведет код?
```python
class Base:
def spam(self):
print("Base", end=" ")
class A(Base):
def spam(self):
print('A', end=" ")
super().spam()
class B(Base):
def spam(self):
print('B', end=" ")
class C(A, B):pass
c = C()
c.spam()
```
Вопрос № 7(Верно)(Неверно)
Ответы:
A Base
B Base
A B Base
A B
Что выведет код?
```python
class A:
def __init__(self, val):
self.val = val
def __repr__(self):
return str(self.val)
def __str__(self):
return str(self)
a = A(21)
try:
print([a], end=" ")
print(a)
except Exception as err:
print(err.__class__.__name__)
```
Вопрос № 8(Верно)(Неверно)
Ответы:
RecursionError
[21] 21
21 RecursionError
[21] RecursionError
Что выведет данный код?
```python
class A:
def __init__(self, val):
self.val = val
def __add__(self, other):
return other + self.val
x = A(2)
y = A(3)
print(x + y)
```
Вопрос № 9(Верно)(Неверно)
Ответы:
5
TypeError
None
A(2)
Что выведет данный код?
```python
class A:
def __init__(self, val):
self.val = val
def __add__(self, other):
return self.val + other
x = A(2)
y = A(3)
print(x + y)
```
Вопрос № 10(Верно)(Неверно)
Ответы:
5
TypeError
None
A(2)
Что выведет код?
```python
class A:
def __add__(self, other):
print('A add')
class B:
def __radd__(self, other):
print('B radd')
a = A()
b = B()
a + b
```
Вопрос № 11(Верно)(Неверно)
Ответы:
TypeError
A add
B radd
B radd
A add
Какой должна быть реализация класса A?
```python
class A1:
def __init__(self, val):
self.val = val
# ваш код
x = A1(11)
у = A1(12)
print(x + 1, 1 + y, x + y)
```
Если вывод программы следующий:
<pre>12 13 23</pre>
Вопрос № 12(Верно)(Неверно)
Ответы:
```python
def __add__(self, other):
return self.val + other
def __radd__(self, other):
return other + self.val
```
```python
def __add__ (self, other):
return self.val + other
def __radd__ (self, other):
return other + self
```
Что выведет код?
```python
class Number:
def __init__(self, val):
self.val = val
def __add__(self, other):
return Number(self.val + other)
x = Number([5])
y = x
x += [6]
x += [7]
print(x.val, x is y)
```
<pre>Для операции += вызывается метод __iadd__ если он определен или __add__ в противном случае.
В данном классе присутствует только метод __add__ , но он создает новый экземпляр, поэтому x is y будет False. Каждый новый экземпляр получает объединенный массив данных текущего экземпляра self.val и нового массива other.</pre>
Вопрос № 13(Верно)(Неверно)
Ответы:
<pre>TypeError: unsupported operand type</pre>
<pre>[5, 6, 7] [5, 6, 7]</pre>
<pre>[5, 6, 7] True</pre>
<pre>[5, 6, 7] False</pre>
Что выдаст код?
```python
class Number:
def __init__(self, val):
self.val = val
def __iadd__(self, other):
self.val += other
return self
x = Number([5])
y = x
x += [6]
x += [7]
print(x.val, x is y)
```
<pre>Для операции += вызывается метод __iadd__ если он определен или __add__ в противном случае.
В данном классе присутствует метод __add__ , он возвращает текущий экземпляр, поэтому x is y будет True. Список чисел self.val постоянно пополняется новыми значениями, но он остается тем же объектом.</pre>
Вопрос № 14(Верно)(Неверно)
Ответы:
<pre>TypeError: unsupported operand type</pre>
<pre>[5, 6, 7] [5, 6, 7]</pre>
<pre>[5, 6, 7] True</pre>
<pre>[5, 6, 7] False</pre>
В какой последовательности вызываются методы класса(для двух экземпляров в совокупности)?
```python
class Commuter:
def __init__(self, val):
self.val = val
def __add__(self, other):
if isinstance(other, Commuter):
other = other.val
return Commuter(self.val + other)
def __radd__(self, other):
return Commuter(other + self.val)
def __str__(self):
return '<Commuter: %s>' % self.val
x = Commuter(88)
y = Commuter(99)
print(x + y)
```
Вывод программы: <Commuter: 187>
<pre>Сперва для каждого экземпляра вызывается метод __init__. Потом для экземпляра x вызывается метод __add__ , в котором проверяется второй аргумент, если он также экземпляр класса Commuter, то из него получаем данные и формируем новый экземпляр класса. Без этой проверки код также бы работал, но вызывал бы еще метод __radd__. В конце в функции print вызывается метод __str__ для объекта - результата выражения x + y.</pre>