-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 的格式与运行交互式会话的方式相同。您可以运行交互式会话并复制它,您将获得所有结果。这可能是一个有效的会话:

>>> 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实例化无效(真正的 Python SyntaxError),因为您有startDate=...(关键字参数)后跟非关键字参数(“经理”的值)。这是阻止它运行的主要问题。这也是异常告诉你的。

如果您无法在 doctest 中弄清楚,请在普通 Python session 中运行它。在那里玩。

您的代码中还有许多其他重大问题;这里有几个:

  • EmpSalariedEmployee:那是什么?
  • 由于使用了可变的默认参数,如果您manage在创建时未指定参数Manager,它们将获得相同的列表。这不是你想要的。
于 2012-05-19T04:44:47.563 回答