不';t Python';s super()内置的吗?

不';t Python';s super()内置的吗?,python,python-2.7,Python,Python 2.7,这显然是有原因的,但我没有足够的经验认识到这一点 这是Python中给出的示例: 从实例方法中“知道”类型的方法是否不依赖于复制类“C”的名称?看起来这个例子可能会导致这样一种情况:类名被更新,但超级函数调用中的类型参数变得过时?与python中手动调用self的方式相同,超级函数是一个简单的函数,我的意思是,python函数不知道执行上下文。例如,这种行为适用于猴子修补 例如,我从pypi获取了您的C类,您每个月都会更新它,因为它是一个有用的类。我想修改它的方法行为,以便它使用您的C类更新我的

这显然是有原因的,但我没有足够的经验认识到这一点

这是Python中给出的示例:


从实例方法中“知道”类型的方法是否不依赖于复制类“C”的名称?看起来这个例子可能会导致这样一种情况:类名被更新,但超级函数调用中的类型参数变得过时?

与python中手动调用self的方式相同,超级函数是一个简单的函数,我的意思是,python函数不知道执行上下文。例如,这种行为适用于猴子修补

例如,我从pypi获取了您的C类,您每个月都会更新它,因为它是一个有用的类。我想修改它的方法行为,以便它使用您的C类更新我的其他需求的组件:

from utils import do_magic
from a import C

def method(self, arg):
    super(C, self).method(arg)
    do_magic(self)

C.method = method

一方面,DRY更多的是关于代码的大部分被复制;另一方面,是的,
super()


在Python3中,
super()
已被修改为不需要类名,只要函数是在类中定义的——因此这不是问题,除非您使用猴子补丁。

这可能是允许
super().method(arg)的原因之一
在Py3中。我认为在Py3中,这不再是Python3中的情况,您可以说
super()
。它需要的编译时分析在Python 2中根本不存在。@martineau,不管
C
是否有多个基。请注意,没有任何基传递给
super()
from utils import do_magic
from a import C

def method(self, arg):
    super(C, self).method(arg)
    do_magic(self)

C.method = method