开发每小时和有薪工作的类和子类

时间:2013-06-05 20:00:53

标签: python

所以,这是我学校的决赛周所以我在教科书中练习了一些额外的问题,我们的教授说“可能会也可能不会”在他尚未教授的决赛中。所以我被困在整个类的概念上。我们正在使用Python。这是问题所在。使用这些构造函数: int () - 构造函数,将工人的nae(作为字符串)和每小时工资率(作为数字)作为输入,changeRate():将新的工资率作为输入并将工人的工资率更改为新的每小时费率,pay() - 将工作小时数作为输入并打印“未实施”

接下来,将HourlyWoker和SalariedWorker作为Worker的子类开发。每个重载都使用继承的方法pay()来比较工人的每周工资。每小时工人按实际工作小时数按小时工资;超过40的任何加班时间都是双倍的。无论工作时数如何,受薪工人的工资都是40小时。因为os小时数与无关紧要,所以受薪工人的方法pay()应该都可以用输入参数调用。

到目前为止,我了解我应该输入什么以及在输入后应该得到什么。但实际上创建该函数并不适用于。

所以对于我的结果我想输入

  w1 = Worker( 'Jeff', 15)
  w1.pay(35)
  Not Implemented
  w2 = SalariedWorker('Sam', 14.50)
  w2.pay()
  580.0
  w3 = HourlyWorker('Daisy', 20)
  w3.pay(25)
  500

如果有人能帮助我,我会非常感谢澄清。哦,当我尝试将一行像def __ 添加 __ :添加到python中时,它会返回语法错误。

1 个答案:

答案 0 :(得分:1)

以下课程结构应符合您的要求:

class Worker(object):
    payme = False
    period = None
    def __init__(self, name, sal):
        self.name = name
        self.sal = sal

    def pay(self, period=None):
        if not self.payme:
            print 'Not Implemented'
            return
        if self.period:
            return self.period*self.sal
        elif not period:
            print 'Please, give a period'
            return
        elif period:
            return period*self.sal

    def __add__(self, other):
        # here adding the salary (sal), but you can add whatever you wish...
        return self.sal + other.sal

class SalariedWorker( Worker ):
    payme = True
    period = 40

class HourlyWorker( Worker ):
    payme = True