试图了解继承。 {
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
答案 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)