gpt4 book ai didi

julia - 获取 Julia 中的所有对象属性?

转载 作者:行者123 更新时间:2023-12-05 01:28:57 24 4
gpt4 key购买 nike

我试图查看特定对象在 Julia 中具有的方法、属性等。我知道一些可能让我参与其中的选项是 fieldnames()。或 hasproperty()但是是否有一个选项可以给我 所有 属性(类似于 dir function in python )?

最佳答案

从类型中检索所有属性

假设您有一个类型T

要查看所有接受T 类型对象作为参数的方法,您可以执行以下操作:

methodswith(T)

要查看所有字段(即:类型的“属性”):

fieldnames(T)

如果你想把所有的信息组合成一个函数,你可以自己做一个,像这样:

function allinfo(type)
display(fieldnames(type))
methodswith(type)
end

从对象中检索所有属性

如果您没有类型,而是对象 a,过程是相同的,但将上面的 Ttype 替换为typeof(a):

# See all methods
methodswith(typeof(a))

# See all fields
methodswith(typeof(a))

# Function combining both
function allinfo(a)
type = typeof(a)
display(fieldnames(type))
methodswith(type)
end

检索所有属性,无论其性质如何

使用多重分派(dispatch),您可以定义一个包含三种方法的函数,无论您传递什么作为参数,它都能为您提供所有信息。

如果您想检查接受 Type 对象作为参数的方法,则需要第三种情况。

# Gets all info when argument is a Type
function allinfo(type::Type)
display(fieldnames(type))
methodswith(type)
end

# Gets all info when the argument is an object
function allinfo(a)
type = typeof(a)
display(fieldnames(type))
methodswith(type)
end

# Gets all info when the argument is a parametric type of Type
function allinfo(a::Type{T}) where T <: Type
methodswith(a)
end

关于julia - 获取 Julia 中的所有对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68153244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com