#791·codon

访问子类的属性

作者: 01110011011101010110010001101111创建于 2026年4月8日更新于 2026年4月21日

哈啰! 我试图访问子类的属性。 例如,我试图运行 这样的东西:

[Python] @ 数据类 类语句 : 通过

@ 数据类 类块( 声明) : 机构: 列表[str]

@ 数据类 类别 : var: str (英语). val: 语句

@ 数据类 类函数 : 名称: str 正文:声明

func body = Block(bodies = ["a"= 1","还原 a").

测试 = 函数( T) 名称="foo", 车体=倒数 (中文(简体) ).

v1 = 测试. body

如果存在( v1, 块) : 机构 = v1. 如果尸体不是无: 用于体内的 stmt: 打印(stmt) 其他情况: 打印( “失败” )


上面的例子,如果函数类的正体属性是块,我想能够通过它的正体属性中的值来排列. 上面的“ codon  experiments.py: 39( 14-23): 错误 : “ 声明” 对象没有属性“ bodies” 。

我试图用一个在家长班的NoneType的联盟:

```2ZZ
@ 数据类
类语句 :
机构: 列表[str] QQ NoneType = 无
var: str | noneType = 无
Val: 语句 QQ NoneType = 无

@ 数据类
类块( 声明) :
机构: 列表[str] QQ NoneType

@ 数据类
类别 :
var: str \ noneType (英语).
Val: 语句 QQ NoneType

@ 数据类
类函数 :
名称: str
正文:声明

func body = Block(bodies = ["a"= 1","还原 a").

测试 = 函数( T)
名称="foo",
车体=倒数
(中文(简体) ).

v1 = 测试. body

如果存在( v1, 块) :
机构 = v1.
如果尸体不是无:
用于体内的 stmt:
打印(stmt)
其他情况:
打印( “失败” )

然而,上述情况没有做到:

Assert 失败: 联盟已经封存 [core.codon: 237: 1]
表达式 : ! Is Sealed ()
资料来源:/GitHub/工作空间/Codon/parser/ast/types/union.cpp:107。
中止(核心倾销)

最后,我尝试了选取型,但结果总是“无”值:

@ 数据类
类语句 :
机构: 可选 [list [str] = 无
var:可选 [str] = 无
Val:可选[声明]=无

@ 数据类
类块( 声明) :
机构: 可选 [list [str]

@ 数据类
类别 :
var:可选 [str] (中文(简体) ).
val: 可选[声明]

@ 数据类
类函数 :
名称: str
正文:声明

func body = Block(bodies = ["a"= 1","还原 a").

测试 = 函数( T)
名称="foo",
车体=倒数
(中文(简体) ).

v1 = 测试. body

如果存在( v1, 块) :
机构 = v1.
如果尸体不是无:
用于体内的 stmt:
打印(stmt)
其他情况:
打印( “失败” )

上述内容汇编并运行,但总是打印出`失效'。

你对如何处理这件事有什么建议吗? 谢谢!