-2

以下のコード、何が間違っているのかわかりません。従業員データベースです。以下は Employee クラスから継承しています。私のコードが間違っていない限り、それを渡すために何をすべきか本当にわかりません。このエラーが表示されます "SyntaxError: キーワード arg の後にキーワード arg がありません"

class Manager(EmpSalaried): #inherits from EmpSalaried 
    def __init__(self, salary=0.0, firstName="", lastName="", ssID="", DOB=datetime.fromordinal(1), 
            startDate=datetime.today(), 
            manage=[]): #manage attribute added for manager
        Employee.__init__(self, salary, firstName, lastName, ssID, DOB, startDate)
        self.manage = manage


    def __str__(self):
        """
        >>> import datetime
        >>> e = Manager(10, 'Bob', 'Quux', '123', startDate=datetime.datetime(2009, 1, 1),          
        ['Michael', 'Bob', 'Hello'])
        >>> print e
        10, Bob Quux, 123, 0001-01-01 00:00:00, 2009-01-01 00:00:00, Michael, Bob, Hello
        >>> b = Manager(2000, 'Bob', 'Lol', '1234', startDate=datetime.datetime(2009, 1, 1),     
        ['Michael', 'Bob', 'Hello'])
        >>> print b
        2000, Bob Lol, 1234, 0001-01-01 00:00:00, 2009-01-01 00:00:00

        """
        return Employee.__str__(self) + ', ' + str(self.manage) #need to convert to a string in order to add to string
4

1 に答える 1

1

Doctest は、対話型セッションを実行するのとまったく同じ方法でフォーマットされます。インタラクティブなセッションを実行してコピーするだけで、すべての結果を取得できます。これは 1 つの有効なセッションである可能性があります。

>>> import datetime
>>> print Manager(10, 'Bob', 'Quux', '123', datetime.datetime(2009, 1, 1),
... ['Michael', 'Bob', 'Hello'])
10, Bob Quux, 123, 0001-01-01 00:00:00, 2009-01-01 00:00:00, Michael, Bob, Hello
>>> print Manager(2000, 'Bob', 'Lol', '1234', datetime.datetime(2009, 1, 1),     
... ['Michael', 'Bob', 'Hello'])
2000, Bob Lol, 1234, 0001-01-01 00:00:00, 2009-01-01 00:00:00

あなたが行ったことには、さまざまな構文エラーがありました。

  • その doctest 部分については、ステートメントを継続する場合、次の行は... (通常のセッションとまったく同じ) で開始する必要があります。
  • (キーワード引数) の後に非キーワード引数 (「manager」の値) が続くため、インスタンスManager化は無効です (本物の Python SyntaxError) 。startDate=...これが、実行を停止した主な問題です。そして、それは例外があなたに言ったことでもあります。

doctest で判断できない場合は、通常の Python セッションで実行してください。そこで遊んでください。

コードには他にも多くの重大な問題があります。ここにそれらのいくつかがあります:

  • EmpSalariedEmployee:それで何が得られますか?
  • 変更可能なデフォルト引数を使用しているため、 をmanage作成するときに引数を指定しないManagerと、同じリストが取得されます。これはあなたが望むものではありません。
于 2012-05-19T04:44:47.563 に答える