forked from M-Labs/nac3
move tests from artiq to standalone
This commit is contained in:
parent
2783834cb1
commit
2d275949b8
@ -1,18 +0,0 @@
|
|||||||
from min_artiq import *
|
|
||||||
from numpy import int32
|
|
||||||
|
|
||||||
@nac3
|
|
||||||
class Demo:
|
|
||||||
attr1: Kernel[str]
|
|
||||||
attr2: Kernel[int32]
|
|
||||||
|
|
||||||
@kernel
|
|
||||||
def __init__(self):
|
|
||||||
self.attr2 = 32
|
|
||||||
self.attr1 = "SAMPLE"
|
|
||||||
|
|
||||||
@kernel
|
|
||||||
def run(self):
|
|
||||||
print_int32(self.attr2)
|
|
||||||
self.attr1
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
from min_artiq import *
|
|
||||||
from numpy import int32
|
|
||||||
|
|
||||||
@nac3
|
|
||||||
class Demo:
|
|
||||||
attr1: KernelInvariant[int32] = 2
|
|
||||||
attr2: int32 = 4
|
|
||||||
attr3: Kernel[int32]
|
|
||||||
|
|
||||||
@kernel
|
|
||||||
def __init__(self):
|
|
||||||
self.attr3 = 8
|
|
||||||
|
|
||||||
@nac3
|
|
||||||
class NAC3Devices:
|
|
||||||
core: KernelInvariant[Core]
|
|
||||||
attr4: KernelInvariant[int32] = 16
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self.core = Core()
|
|
||||||
|
|
||||||
@kernel
|
|
||||||
def run(self):
|
|
||||||
Demo.attr1 # Supported
|
|
||||||
# Demo.attr2 # Field not accessible on Kernel
|
|
||||||
# Demo.attr3 # Only attributes can be accessed in this way
|
|
||||||
# Demo.attr1 = 2 # Attributes are immutable
|
|
||||||
|
|
||||||
self.attr4 # Attributes can be accessed within class
|
|
||||||
|
|
||||||
obj = Demo()
|
|
||||||
obj.attr1 # Attributes can be accessed by class objects
|
|
||||||
|
|
||||||
NAC3Devices.attr4 # Attributes accessible for classes without __init__
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
NAC3Devices().run()
|
|
35
nac3standalone/demo/src/class_attributes.py
Normal file
35
nac3standalone/demo/src/class_attributes.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
@extern
|
||||||
|
def output_int32(x: int32):
|
||||||
|
...
|
||||||
|
|
||||||
|
@extern
|
||||||
|
def output_strln(x: str):
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
class A:
|
||||||
|
a: int32 = 1
|
||||||
|
b: int32
|
||||||
|
c: str = "test"
|
||||||
|
d: str
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.b = 2
|
||||||
|
self.d = "test"
|
||||||
|
|
||||||
|
output_int32(self.a) # Attributes can be accessed within class
|
||||||
|
|
||||||
|
|
||||||
|
def run() -> int32:
|
||||||
|
output_int32(A.a) # Attributes can be directly accessed with class name
|
||||||
|
# A.b # Only attributes can be accessed in this way
|
||||||
|
# A.a = 2 # Attributes are immutable
|
||||||
|
|
||||||
|
obj = A()
|
||||||
|
output_int32(obj.a) # Attributes can be accessed by class objects
|
||||||
|
|
||||||
|
output_strln(obj.c)
|
||||||
|
output_strln(obj.d)
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user