如何在python中获取对象的属性类型

时间:2017-08-15 05:02:58

标签: python python-2.7

假设我有以下课程:

usr = (str(input('USERNAME : ')))
if usr == 'python':
  password = (str(input('PASSWORD : ')))
  if password == 'root':
    print ('login succesfull')
  else:
    print ('wrong password')
else:
  print ('wrong username')

如何获取属性类型?我的意思是我想得到以下列表:[' str',' int']?

我也希望它能够在派生类上工作。

非常感谢:)

2 个答案:

答案 0 :(得分:0)

使用type()函数。您甚至可以使用它来打印出如下变量类型:

print(type(variable_name))

答案 1 :(得分:0)

RHP几乎拥有它。您想要合并dirtypegetattr函数。这样的理解应该是你想要的:

o = myClass(1)
[type(getattr(o, name)).__name__ for name in dir(o) if name[:2] != '__' and name[-2:] != '__']

这会给您['int', 'str'](因为myIntmyStr之前按字母顺序排序。

打破它:

  1. getattr查找对象上属性的名称
  2. type获取对象的类型
  3. __name__上的
  4. type会提供类型
  5. 的字符串名称
  6. dir列出对象的所有属性(包括__dunder__属性)
  7. 理解中的if测试会过滤掉__dunder__属性