继承自己的Python类?这是如何运作的?

时间:2010-01-16 19:19:32

标签: python eclipse facebook

相对较新的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
这是做什么的?

Tangentially相关,我在Eclipse中使用PyDev,它将此标记为错误。我猜不是这样的。无论如何让Eclipse知道这很好吗?

4 个答案:

答案 0 :(得分:14)

那里的类语句没有让类继承自己,它创建一个类对象,当前值为AuthProxy作为超类,然后将类对象分配给变量'AuthProxy',可能会覆盖先前分配的它继承自的AuthProxy。

基本上,它与x = f(x)大致相同:x不是f本身的值,没有循环依赖 - 只有旧的x和新的x。旧的AuthProxy和新的AuthProxy。

答案 1 :(得分:3)

它使用从其他模块导入的AuthProxy(检查导入)并从中派生。

答案 2 :(得分:3)

“前”AuthProxy是由__generate_proxies创建的(它不是很好的代码,其中甚至有execeval :)),但作者也希望定义一些方法就在它之上。

答案 3 :(得分:1)

要让Eclipse停止抱怨它,请执行以下操作:

类AuthProxy(AuthProxy):#@ UndefinedVariable