2014-01-28 67 views
0

我是Django的新手。我只是從C++移動。當我想重寫一個類方法時,我有一個問題。爲什麼我們需要調用當前的類名?例如爲什麼我們需要在覆蓋方法中調用當前類django

class MyStuff(models.Model): 

    def __init__(self, *args, **kwargs): 
     super(MyStuff, self).__init__(*args, **kwargs) #calling super "MyStuff" instead of "Model" 

我不確定Django是如何在內部工作的。我們爲什麼不撥打super(Model, self)?我可以怎樣稱呼祖父母方法?

+2

你的問題是關於蟒蛇,不Django的。這不是一個類方法。 – lalo

+0

'super'的規範指南(來自Python官方文檔的鏈接):[Python's super()認爲超級](http://rhettinger.wordpress.com/2011/05/26/super-considered-super/) – lanzz

回答

0

this answer

當你做super(MyStuff, self).__init__(*args, **kwargs)您呼叫的「父」

在Python中的一個實例方法,你有多個inherance,所以當你調用super()方法解析順序是不只是一個家長,因爲你有多個家長。 見here

希望幫助

+0

哦,是的。謝謝。我想投票支持你,但我的名聲低於15 – MooMoo

+0

接受這樣的回答 – lalo

相關問題