30 lines
734 B
Python
30 lines
734 B
Python
import t, c
|
|
import stdlib
|
|
import circ_a
|
|
|
|
|
|
# ============================================================
|
|
# 循环引用测试:模块 B
|
|
#
|
|
# circ_b imports circ_a, circ_a imports circ_b — 循环引用
|
|
# ClassB.MakeA() 返回 circ_a.ClassA 实例(跨模块构造 + 类型注解)
|
|
# ============================================================
|
|
|
|
|
|
class ClassB:
|
|
y: t.CInt
|
|
|
|
def __new__(self, val: t.CInt):
|
|
r: ClassB | t.CPtr = stdlib.malloc(ClassB.__sizeof__())
|
|
return r
|
|
|
|
def __init__(self, val: t.CInt):
|
|
self.y = val
|
|
|
|
def GetValue(self) -> t.CInt:
|
|
return self.y
|
|
|
|
def MakeA(self) -> circ_a.ClassA | t.CPtr:
|
|
a: circ_a.ClassA | t.CPtr = circ_a.ClassA(self.y)
|
|
return a
|