如何利用类继承?

时间:2017-05-26 19:58:22

标签: python

试图了解继承。 { first_name: "John", last_name: "Doe", memberships: ["mem1", "mem2"], address: { street: "4 main st", city: "Boston" }, contacts: [ { name: "Brad", relationship: "friend" } ] } 类应该继承PartTimeEmployee类的属性。但是我尝试了错误"点击"进入Employee方法打印出ReturnName信息。

PartTimeEmployee

2 个答案:

答案 0 :(得分:2)

注释行:

#pt_pay = pt_emp_name.calculate_wage(20)

应该是:

pt_pay = pt_emp.calculate_wage(20)

否则,它试图在字符串对象上调用方法calculate_wage。

答案 1 :(得分:1)

你真正拥有的是两种不同类型的员工,全职和兼职。因此,我可能会使用这样的设计:

class Employee(object):
    def __init__(self, name, wage):
        self.name = name
        self.wage = wage

    def calculate_wage(self, hours):
        return hours * self.wage


class FullTimeEmployee(Employee):
    def __init__(self, name):
        super().__init__(name, 20)


class PartTimeEmployee(Employee):
    def __init__(self, name):
        super().__init__(name, 12)

Employee包含任何类型员工共有的所有内容。子类包含特定于每种类型的信息,到目前为止只是每小时支付的小时工资。请注意,没有ReturnName方法。如果您想要员工的姓名,只需直接访问name属性。

ft_emp = FullTimeEmployee("Mike")
ft_emp_name = ft_emp.name

pt_emp = PartTimeEmployee("Bill")
pt_emp_name = pt_emp.name

ft_pay = ft_emp.calculate_wage(40)
pt_pay = pt_emp.calculate_wage(20)

print "Full time employee %s made $%d for the week." %(ft_emp_name, ft_pay)
print "Part time employee %s made $%d for the week." %(pt_emp_name, pt_pay)