下面的代码,不确定我做错了什么。这是一个员工数据库。以下继承自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
答案 0 :(得分:1)
Doctests的格式与运行交互式会话的方式相同。您可以运行交互式会话并只复制它,您将获得所有结果。这可能是一个有效的会话:
>>> 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
您所做的事情中存在各种语法错误;
...
开头(与常规会话完全相同); Manager
实例化无效(正版Python SyntaxError
),因为您有startDate=...
(关键字参数),后跟非关键字参数(“manager”的值)。这是阻止它运行的主要问题。这也是异常告诉你的。如果你无法在doctest中弄清楚,在普通的Python会话中运行它。在那里玩它。
您的代码中还存在许多其他重要问题;这里有几个:
EmpSalaried
与Employee
:对此给出了什么?manage
时未指定Manager
参数,则它们将获得相同的列表。这不是你想要的。