如何从超级访问变量?

时间:2016-09-25 01:38:15

标签: python

我需要在使用super调用的方法中获取一些变量我真的想这样做而不是子类化然后重新定义方法......

class Foo(object):
    def bar(self):
        x = 1

class SubFoo(Foo):
    def bar(self):
        print x
        super(SubFoo, self).bar(*args, **kwargs)

但我得到了object has no attribute 'request'

我尝试使用自己,但它不起作用

1 个答案:

答案 0 :(得分:5)

有两种方法可以执行此操作,或者将x设为实例属性,或者在Foo.bar方法中返回x。下面的示例使用将x指定为实例属性:

class Foo(object):
    def bar(self):
        self.x = 1


class SubFoo(Foo):
    def bar(self):
        super(SubFoo, self).bar()
        print(self.x)


s = SubFoo()
s.bar()

上述执行将输出1

或者,您可以使用return x方法执行Foo.bar,但请记住,这意味着您需要以某种方式处理此返回。因此,您需要确保从super电话中获得回报:

    def bar(self):
        res = super(SubFoo, self).bar()
        print(res)