1

これが私の宿題です:

問題の最初の部分は、従業員のマネージャーである別の従業員を参照する属性をWorker継承して含むサブクラスを定義することです。ワーカーのマネージャーを返すEmployeeメソッドを定義する必要があります。get_manager

例:
worker = Worker("Fred", 52000, myboss)

問題の 2 番目の部分は、年次ボーナスを参照する属性をExecutive継承して含むサブクラスを定義することです。Employee

役員の給与とボーナスに基づいて役員報酬を計算するには、wage メソッドをオーバーライドする必要があります。Employeeクラスのウェイジ メソッドの定義では、ウェイジ メソッドを使用する必要がありますExecutive

例:
executive = Executive("Kerry", 520000, 1040000)

以下のコードを提出しましたが、「役員の賃金が間違っています」と言われました。エラーが何であるかわかりません。どうすれば正しくなりますか?

class Employee(object):

    def __init__(self, name, salary):
        self._name = name
        self._salary = salary

    def my_name(self):
        return self._name

    def wage(self):
        return self._salary/26   # fortnight pay

class Worker(Employee):
    def __init__(self, name, salary, manager):
        Employee.__init__(self, name, salary)
        self._manager = manager

    def getManager(self):
        return self._manager

class Executive(Employee):
    def __init__(self, name, wage, yearlyBonus):
        Employee.__init__(self, name, salary) 
        self._yearlyBonus = yearlyBonus

    def wage(self):
        return Employee.wage(self)
4

3 に答える 3

2

super()現在のクラスのスーパークラスを呼び出すために使用できます。

def __init__(self, name, salary, manager):
    super(Worker, self).__init__(name, salary)
    self._manager = manager
于 2012-09-07T16:15:55.347 に答える
0

2 つのアプローチのsuper(parent, self).method(...)アプローチまたはparent.method(self,...)はほぼ同等です。どちらの場合も、method親から a を呼び出して子に適用できます。

このメソッドは次のようになります__init__: 親のように子インスタンスを初期化することは常に良い考えです:

class Worker(Employee):
    def __init__(self, *args):
        Employee.__init__(self, ...)
        finish_the_initialization_of_worker

ただし、メソッドは次のように何でもかまいません。wage

class Executive(Employee):
    def wage(self):
        return Employee.wage(self) + self._yearly_bonus
于 2012-09-07T16:38:42.027 に答える
0

次を使用することもできます。

class Worker(Employee):
    def __init__(self, name, salary, manager):
        Employee.__init__(self, name, salary)
        self._manager = manager

古いスタイルのクラスを継承した場合、これは古いスタイルのクラスでも機能します。

于 2012-09-07T16:24:19.810 に答える