2016-09-25 67 views
-1

我需要在一個叫做與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'

我嘗試使用自我,但它不會工作

+0

這是整個劇本嗎? – baranskistad

+0

好吧,我真正的例子是在一個更大的課堂,但這是歸結爲根本問題 – deltaskelta

+0

什麼是整個錯誤? – baranskistad

回答

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

或者,您可以從Foo.bar方法中執行return x,但請記住,那意味着您需要以某種方式處理此返回。所以,你需要確保你從super來電回電:

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