如何在Python中查找对象的所有属性的类型?

时间:2019-08-14 18:13:40

标签: python types attributes

我有张量

x = torch.tensor([1, 2, 3])

我做到了

len(dir(x))

给了这个

464

我想知道这464个属性中有多少个是buildin_function_or_method或方法或任何其他类型的。

如何列出张量的属性类型?

3 个答案:

答案 0 :(得分:2)

help(x)会根据您传入的内容生成一些基本文档。它将告诉您对象的类型,属性,方法等。

答案 1 :(得分:0)

这就是我得到张量的所有属性的类型的

导入模块,创建张量

import torch
from collections import defaultdict

x = torch.tensor([1., 2., 3.])

下面的列表理解会给出属性及其类型的列表

a = [(f'x.{i}', type(getattr(x, i))) for i in dir(x)]

使用defaultdict,创建了一个字典,该字典根据类型存储属性。

e = defaultdict(list)
for i, j in a.items():
  e[j].append(i)

答案 2 :(得分:0)

通常,您不应该访问的属性以___开头。因此,[att for att in dir(x) if not att.startswith('_')]

如果您也要排除函数,请在条件中添加and not callable(att)