summaryrefslogtreecommitdiff
path: root/docs/examples/userguide/extension_types/dataclass.py
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/userguide/extension_types/dataclass.py')
-rw-r--r--docs/examples/userguide/extension_types/dataclass.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/docs/examples/userguide/extension_types/dataclass.py b/docs/examples/userguide/extension_types/dataclass.py
new file mode 100644
index 000000000..d8ed68666
--- /dev/null
+++ b/docs/examples/userguide/extension_types/dataclass.py
@@ -0,0 +1,21 @@
+import cython
+try:
+ import typing
+ import dataclasses
+except ImportError:
+ pass # The modules don't actually have to exists for Cython to use them as annotations
+
+@cython.dataclasses.dataclass
+@cython.cclass
+class MyDataclass:
+ # fields can be declared using annotations
+ a: cython.int = 0
+ b: double = cython.dataclasses.field(default_factory = lambda: 10, repr=False)
+
+
+ c: str = 'hello'
+
+
+ # typing.InitVar and typing.ClassVar also work
+ d: dataclasses.InitVar[double] = 5
+ e: typing.ClassVar[list] = []