cython
1# mode: run
2# tag: pure
3
4class Foo:5@property6def foo(self):7return None8@property9def bar(self):10raise AttributeError11@property12def baz(self):13return int(1)/int(0)14
15
16unicode_foo = u"foo"17
18
19def wrap_hasattr(obj, name):20"""21>>> wrap_hasattr(None, "abc")
22False
23>>> wrap_hasattr(list, "append")
24True
25>>> wrap_hasattr(Foo(), "foo")
26True
27>>> wrap_hasattr(Foo(), unicode_foo)
28True
29>>> wrap_hasattr(Foo(), "spam")
30False
31>>> wrap_hasattr(Foo(), "bar")
32False
33>>> Foo().baz #doctest: +ELLIPSIS
34Traceback (most recent call last):
35ZeroDivisionError: ...
36>>> wrap_hasattr(Foo(), "baz") # doctest: +ELLIPSIS
37Traceback (most recent call last):
38ZeroDivisionError...
39>>> hasattr(Foo(), None) #doctest: +ELLIPSIS
40Traceback (most recent call last):
41...
42TypeError: ...attribute name must be string...
43"""
44return hasattr(obj, name)45