2016-10-30 37 views
4

好吧我是OOP的新手,我的問題是我有這個父類,它有一個方法信息。我想重用這兩個print在同一名稱的方法內的子類中的該方法中的語句並向其添加更多信息。但我不能讓它工作如何將父類方法的內容添加到子類方法中

class company: 

    def __init__(self, fName, lName, salary): 

     self.fName = fName 
     self.lName = lName 
     self.salary = salary 

    def info(self): 
     print("Name:", self.fName, self.lName) 
     print("Salary:", self.salary) 

class programmers(company): 
    def __init__(self, fName, lName, salary, progLang): 

     super().__init__(fName, lName, salary) 
     self.progLang = progLang 

    def info(self): 
     print("Programming language:", self.progLang) 

programmer1 = programmers("John", "Doe", 1000, "Python") 
programmer1.info() 

我想到了剛剛改寫我想重用的代碼行,但我雖然會走點了OOP的。

我在尋找這種輸出的...

Name: John Doe 
Salary: 1000 
Programming language: Python 

我使用Python 3

提前

謝謝!

+5

作品'super'是你的朋友:http://www.blog.pythonlibrary.org/2014/01/21/python-201-what-is-super/ – BorrajaX

+0

你應該描述你試過的「沒有用」 –

+0

我想在父類信息方法中使用兩個打印語句,並在程序員類信息方法 – acubal

回答

1

嘗試下面的代碼。你的父母班應該繼承"object"。超只爲new style classes

class company(object): 

    def __init__(self, fName, lName, salary): 

     self.fName = fName 
     self.lName = lName 
     self.salary = salary 

    def info(self): 
     print("Name:", self.fName, self.lName) 
     print("Salary:", self.salary) 

class programmers(company): 
    def __init__(self, fName, lName, salary, progLang): 

     super(programmers, self).__init__(fName, lName, salary) 
     self.progLang = progLang 

    def info(self): 
     super(programmers, self).info() 
     print("Programming language:", self.progLang) 

programmer1 = programmers("John", "Doe", 1000, "Python") 
programmer1.info() 
+0

我照你所說的做了,但我收到了一個屬性錯誤 – acubal

+4

在Python 3中,你不需要將這些參數傳遞給'super',也不需要從'object'繼承,這是默認情況下發生的(只有「new style 「類) –

+0

@acubal但是,這仍然*應該*工作。你準確得到什麼錯誤? –