2012-12-17 74 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