Python z3py,列出数据类型中声明的函数

Python z3py,列出数据类型中声明的函数,python,z3,z3py,Python,Z3,Z3py,如何从排序中获取已声明函数的列表?请看代码的最后一行 您正在查找构造函数字段,如下所示: 请注意,通过覆盖记录的值,您将自己绘制到了一个角落。如果您想进行这种级别的编程,最好保持名称的明确性。也就是说,使用不同的名称调用数据类型,当您创建时,将其指定给不同的名称。通过这种方式,您可以轻松跟踪数据类型和排序。下面是您的示例,代码更清晰: 从z3导入* 记录\u dt=数据类型(“记录”) 记录声明('cons',('f1',BoolSort()),('f2',BoolSort()),('f3',B

如何从排序中获取已声明函数的列表?请看代码的最后一行

您正在查找
构造函数
字段,如下所示:

请注意,通过覆盖
记录的值
,您将自己绘制到了一个角落。如果您想进行这种级别的编程,最好保持名称的明确性。也就是说,使用不同的名称调用数据类型,当您创建时,将其指定给不同的名称。通过这种方式,您可以轻松跟踪数据类型和排序。下面是您的示例,代码更清晰:

从z3导入*
记录\u dt=数据类型(“记录”)
记录声明('cons',('f1',BoolSort()),('f2',BoolSort()),('f3',BoolSort()))
记录排序=记录创建()
函数=记录构造函数
打印功能
这张照片是:

from z3 import *

record = Datatype("record")
record.declare('cons', ('f1', BoolSort()), ('f2', BoolSort()), ('f3', BoolSort()))
record = record.create()

tmp = Const('tmp', record)

data_type = tmp.sort()  # get the sort of the tmp var, which will be "record"
functions = data_type.functions  # returns the list of functions declared in "record" [cons, f1, f2, f3]

这将为您提供构造函数的名称(
cons
)、识别器(
is cons
)以及所有字段的名称和排序(
f1
f2
f3
),然后您可以按照自己的意愿使用这些字段。

import*
被视为重复练习。感谢您的回复@alias!是否可以在不访问记录的情况下获取信息?例如,从您创建的实例获取它。r1=Const('r1',record_sort),然后以某种方式仅从r1获取函数?另外,如何获取函数对象而不仅仅是函数名?因为如果我想添加一个约束f1(r1)==True,我必须正确使用实际的f1函数?你可以使用
访问器
函数来访问字段函数:要从对象中访问,你必须提取排序,然后自己通过该机制。可行,但不推荐。此外,堆栈溢出注释最好用于简单的澄清;请针对新主题提出新问题。
[('cons', 'is-cons', (('f1', Bool), ('f2', Bool), ('f3', Bool)))]