在Python中检查属性的基础类型

问题描述 投票:0回答:1

我试图找出python中的一个对象是什么类型(是一个方法?是一个类?是静态方法?)使用属性,例如:

迭代我模块的__dict__属性对象中存在的对象:如果一个对象有一个名为__class__的属性,并且它的__name__属性等于"class"那么它就是一个类。如果没有,它是我的模块中定义的变量(无论__name__返回什么类)。

如果一个对象有一个名为"func_name"的属性是一个方法。当我遇到所谓的属性时会出现问题。属性对象prop.attr("__class__").attr("__name__")"将返回"property"。但是我怎么能提取属性的类型呢?我想知道它是浮点数,整数等。

>>>Vector3 is a class
>>>Vector3 has a member Y (property)
>>><property object at 0x000002840809E278>
>>>Y property attributes: ['__class__', '__delattr__', '__delete__', '__doc__', '__format__', '__get__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__set__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'deleter', 'fdel', 'fget', 'fset', 'getter', 'setter']

我无法使用getter__get__等,因为我没有对象的实例来调用此属性(getter将对象作为参数)。

对于上下文,我使用Boost.Python从C ++代码检查这些对象,但由于我只使用属性,我认为它与解决方案无关。只是为了证明为什么我没有使用更常规的方法,比如检查模块。

python properties attributes
1个回答
0
投票

我认为由于Python的动态特性,这是不可能的。

我能够通过记录属性和读取__doc__属性来解决它

© www.soinside.com 2019 - 2024. All rights reserved.