37 lines
515 B
Python
37 lines
515 B
Python
|
class A():
|
||
|
def __iter__(self):
|
||
|
def _():
|
||
|
return _
|
||
|
return _
|
||
|
class B(A):
|
||
|
pass
|
||
|
|
||
|
let a = A()
|
||
|
let b = B()
|
||
|
|
||
|
def __iter__(self):
|
||
|
let o = 4
|
||
|
def _():
|
||
|
if o:
|
||
|
return (o -= 1)
|
||
|
return _
|
||
|
return _
|
||
|
|
||
|
A.__iter__ = __iter__
|
||
|
|
||
|
for i in a:
|
||
|
print(i)
|
||
|
|
||
|
for i in b:
|
||
|
print(i)
|
||
|
|
||
|
# now what if we remove it
|
||
|
del A.__iter__
|
||
|
|
||
|
try:
|
||
|
for i in b:
|
||
|
print(i)
|
||
|
print('did not raise attribute error')
|
||
|
except AttributeError:
|
||
|
print('raised attribute error')
|