You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
519 B
28 lines
519 B
# test __getattr__
|
|
|
|
class A:
|
|
def __init__(self, d):
|
|
self.d = d
|
|
|
|
def __getattr__(self, attr):
|
|
return self.d[attr]
|
|
|
|
a = A({'a':1, 'b':2})
|
|
print(a.a, a.b)
|
|
|
|
# test that any exception raised in __getattr__ propagates out
|
|
class A:
|
|
def __getattr__(self, attr):
|
|
if attr == "value":
|
|
raise ValueError(123)
|
|
else:
|
|
raise AttributeError(456)
|
|
a = A()
|
|
try:
|
|
a.value
|
|
except ValueError as er:
|
|
print(er)
|
|
try:
|
|
a.attr
|
|
except AttributeError as er:
|
|
print(er)
|
|
|