Python 相对较新,我在 PyFacebook 库中看到了以下结构(来源:http://github.com/sciyoshi/pyfacebook/blob/master/facebook/init.py#L660)。我很好奇这是做什么的,因为它似乎是一个继承自自身的类。
class AuthProxy(AuthProxy):
"""Special proxy for facebook.auth."""
def getSession(self):
"""Facebook API call. See http://developers.facebook.com/documentation.php?v=1.0&method=auth.getSession"""
...
return result
def createToken(self):
"""Facebook API call. See http://developers.facebook.com/documentation.php?v=1.0&method=auth.createToken"""
...
return token
这是在做什么?
切线相关,我在 Eclipse 中使用 PyDev,它会将此标记为错误。我猜事实并非如此。无论如何让 Eclipse 知道这很好?
最佳答案
那里的class语句并没有让类继承自自身,它创建了一个以AuthProxy的当前值作为父类(super class)的类对象,然后将类对象赋值给变量'AuthProxy',大概是覆盖了之前赋值的它继承自的 AuthProxy。
本质上,它与 x = f(x)
大致相同:x 不是 f 自身的值,不存在循环依赖——只有旧的 x 和新的 x X。旧的 AuthProxy 和新的 AuthProxy。
关于从自身继承的Python类?这是如何运作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078634/