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.
47 lines
799 B
47 lines
799 B
4 years ago
|
class A:
|
||
|
|
||
|
var = 132
|
||
|
|
||
|
def __init__(self):
|
||
|
self.var2 = 34
|
||
|
|
||
|
def meth(self, i):
|
||
|
return 42 + i
|
||
|
|
||
|
|
||
|
a = A()
|
||
|
print(hasattr(a, "var"))
|
||
|
print(hasattr(a, "var2"))
|
||
|
print(hasattr(a, "meth"))
|
||
|
print(hasattr(a, "_none_such"))
|
||
|
print(hasattr(list, "foo"))
|
||
|
|
||
|
class C:
|
||
|
|
||
|
def __getattr__(self, attr):
|
||
|
if attr == "exists":
|
||
|
return attr
|
||
|
elif attr == "raise":
|
||
|
raise Exception(123)
|
||
|
raise AttributeError
|
||
|
|
||
|
c = C()
|
||
|
print(hasattr(c, "exists"))
|
||
|
print(hasattr(c, "doesnt_exist"))
|
||
|
|
||
|
# ensure that non-AttributeError exceptions propagate out of hasattr
|
||
|
try:
|
||
|
hasattr(c, "raise")
|
||
|
except Exception as er:
|
||
|
print(er)
|
||
|
|
||
|
try:
|
||
|
hasattr(1, b'123')
|
||
|
except TypeError:
|
||
|
print('TypeError')
|
||
|
|
||
|
try:
|
||
|
hasattr(1, 123)
|
||
|
except TypeError:
|
||
|
print('TypeError')
|