遇到pandas.core.indexing._iLocIndexer
错误时,我正在对熊猫对象进行自省。
docs说:
definition.__qualname__
类,函数,方法,描述符或 生成器实例。
我想知道是否所有对象都具有__qualname__
(假设Python 3.3+),如果没有,这些对象是什么。
答案 0 :(得分:0)
根据 PEP3155 __qualname__
是在 class
和 function
对象上引入的。
现在,我们需要记住,在 Python 中一切都是一个对象。函数是对象。类是对象!这里我们并不是说“类的实例”是对象,而是类本身就是对象。
示例:
>>> class C:
... def __init__(self, a): self.a = a
...
>>> c = C(2)
>>> type(c)
<class '__main__.C'>
>>> hasattr(c, '__qualname__')
False
>>> hasattr(C, '__qualname__')
True
>>> C.__qualname__
'C'
所以类 C
有 __qualname__
但这个类的实例没有它。您可以使用间接方式检索它,但是:c.__class__.__qualname__
(small c
)
函数类似:
>>> def f(b): print(b)
...
>>> hasattr(f, '__qualname__')
True
>>> f.__qualname__
'f'
如果嵌套类和函数,它们的 __qualname__
将指示此定义层次结构。见What is qualname