2014-10-18 126 views
-3

最近我一直在學習關於類和繼承等。對於類,我們如何設想從super().__init__()以外的類繼承其他特性。學習面向對象的繼承

class classone(object): 
    def __init__(self, benchpress): 
      self.benchpress = benchpress 

class classtwo(classone): #Parent class is classone 
    def __init__(self, i_bench_four_hundred): 
      self.i_bench_four_hundred = i_bench_four_hundred 

call_class = classtwo("Good job") 
print(call_class.i_bench_four_hundred) 

所以從這裏我怎麼從「父級」獲得數據或特徵。因爲這就是OOP的關鍵所在?從上層階級獲得東西?如果你不想這樣做,爲什麼不只是沒有OOP的代碼。我這樣說是因爲我看到那些不會真正嘗試從父類中獲得任何東西的人,他們只是在「結果」或「目標」中相關。

+1

['super().__ init__()'](https://docs.python.org/3/library/functions.html#super)? – grc 2014-10-18 08:59:00

+0

是你的問題:我如何從'classtwo'訪問'benchpress'?你會使用'super'。 – 2014-10-18 09:00:33

+0

那麼,那麼我的問題的第二部分。如果你不打算這樣做,那麼使用類的意義何在。 (正如我看其他代碼) – user3818650 2014-10-18 09:02:37

回答

1

類的要點是它們封裝了數據以及對數據進行操作的方法。類可以擴展,子類將繼承父類的屬性。這是類和麪向對象編程的一個特殊功能 - 「繼承」。

要訪問Python中父類的重寫方法,請使用super().method()語法。如果屬性未被覆蓋,則可以使用self.method()進行訪問。我認爲這是你問的問題。

+0

「封裝對數據進行操作的數據和方法「,這是否意味着使代碼更加乾淨和有效,以便編輯很容易? – user3818650 2014-10-18 09:21:01

+1

這可能是一個好處,但不是中心原則。它:http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming) – 2014-10-18 09:24:13

+0

而且我剛剛瞭解到,你從父類自動繼承了相同的函數,沒有任何繼承命令,這將是使用類的另一個原因。 – user3818650 2014-10-18 10:08:31