假设我在类外使用super
。我能做到。
super(int, 1).__str__ # <method-wrapper '__str__' of int object at 0x000000005E29C6B0>
但是我做不到
super(int, 1).__float__ # raises an AttributeError
更一般地说,我可以检查 1
具有的所有方法,但不能检查 super(int, 1)
对象。
set(dir(1)) - set(dir(super(int,1)))
这将输出一组四十多个特定于 1
的属性,即 __round__
、__float__
或 real
到仅举几个例子。
是什么导致了 super
的这种行为和/或这些方法有何不同。
最佳答案
当您执行 super(int, 1).__float__
时,您要求覆盖 int.__float__
方法。没有一个。
关于python - 为什么 super 只有类属性的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49080746/