2012-12-17 75 views
-1

我正在學一個Programming類,對於需要創建一個繼承自已創建類的類的測試之一。這是老師教我做的代碼,但它似乎並不奏效:Python類有什麼問題繼承

class Intern(Employer): 
    def __init__(self, last_name, first_name, address, phone, email, end_date): 
     Employer(last_name, first_name, address, phone, email) 
     self.end_date=end_date 
    def intern_info(self): 
     self.print_info() 
     print self.end_date 
+3

請定義你的意思是「似乎並不奏效。」 –

+0

如果這是老師教你做的事,他就是無能。更可能的是,你錯過了至關重要的一塊。 – delnan

+0

另外,我需要能夠使用「self.print_info()」打印Employer類中的屬性,然後打印新的end_date屬性 –

回答

6

Employer(last_name, first_name, address, phone, email) 

創建Employer對象立即進行垃圾收集作爲__init__()端部執行。它不會以任何方式影響對象Intern。你是什​​麼意思大概是一樣的東西

Employer.__init__(self, last_name, first_name, address, phone, email) 

也許

super(Intern, self).__init__(last_name, first_name, address, phone, email) 
+0

我試圖創建一個對象,它說:文件「」,第3行,在__init__ 超級(僱主,自我).__初始化__(姓,名,地址,電話,電子郵件) TypeError:必須是類型,而不是classobj –

+0

@JoshLivingston如果你將'Employer'類定義爲'class Employer(object):...',你可以解決這個問題。這種方式'僱主'將是[*新風格類*](http://stackoverflow.com/q/54867/1258041),這是你在編寫新代碼時應該使用的東西。 –

+0

好的,我做了僱主.__ init __(self,last_name ...),它工作。現在,我需要幫助它下面的函數,def intern_info(self):...它應該從Employer類的print_info()函數中打印last_name,first_name和Employer的所有其他屬性。當我調用intern_info()函數時,它給了我這個錯誤:AttributeError:實例實例沒有屬性'print_info' –

0

你缺少壓痕這對於Python代碼塊的機制。

嘗試:

class Intern(Employer): 
    def __init__(self, last_name, first_name, address, phone, email, end_date): 
     Employer(last_name, first_name, address, phone, email) 
     self.end_date=end_date 
    def intern_info(self): 
     self.print_info() 
     print self.end_date 
+0

儘管這不是唯一的問題,並且不太可能是OP實際面臨的問題。 – delnan

+0

我修正了它,當我粘貼程序時,它只是搞砸了 –

+0

@delnan你知道,我會修復我的帖子,但這裏的人太快了! – PALEN

2

你缺少的參數selfEmployer。您需要使用super或明確將self傳遞給父母的__init__。您還需要明確調用父母的方法__init__

class Intern(Employer): 
    def __init__(self, last_name, first_name, address, phone, email, end_date): 
     Employer.__init__(self, last_name, first_name, address, phone, email) 
     self.end_date=end_date 
    def intern_info(self): 
     self.print_info() 
     print self.end_date