summaryrefslogtreecommitdiff
path: root/docs/examples/tutorial/cdef_classes/nonecheck.py
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/tutorial/cdef_classes/nonecheck.py')
-rw-r--r--docs/examples/tutorial/cdef_classes/nonecheck.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/examples/tutorial/cdef_classes/nonecheck.py b/docs/examples/tutorial/cdef_classes/nonecheck.py
new file mode 100644
index 000000000..dccb97435
--- /dev/null
+++ b/docs/examples/tutorial/cdef_classes/nonecheck.py
@@ -0,0 +1,20 @@
+# cython: nonecheck=True
+# ^^^ Turns on nonecheck globally
+
+import cython
+
+@cython.cclass
+class MyClass:
+ pass
+
+# Turn off nonecheck locally for the function
+@cython.nonecheck(False)
+def func():
+ obj: MyClass = None
+ try:
+ # Turn nonecheck on again for a block
+ with cython.nonecheck(True):
+ print(obj.myfunc()) # Raises exception
+ except AttributeError:
+ pass
+ print(obj.myfunc()) # Hope for a crash!