我是Python的新手.我需要创建一个简单的学生课程,其中包括名字,姓氏,身份证和将课程名称映射到其成绩的字典.
class Student:
def __init__(self, firstName, lastName, id, _____ (dictionary values)):
self._firstName = firstName;
self._lastName = lastName;
self._id = id;
self.
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在构造函数中初始化字典值?
例如,假设我想在等级映射中添加3门课程:"数学:100""生物:90""历史:80"
例如:
student1 = Student("Edward", "Gates", "0456789", math: 100, bio: 90, history: 80)
Run Code Online (Sandbox Code Playgroud)
最后3个值应该进入字典.
由于可以作为字典一部分的键值的数量可以变化,我应该在构造函数参数签名中写什么?
我想在调用构造函数时发送所有学生值...
如果你想添加一个字典,Mathias的回答就足以满足python中的关键字参数.
但是,如果您希望从关键字参数添加对象变量,则需要setattr
例如,如果你想要这样的东西:
student1 = Student("Edward", "Gates", "0456789", {'math': 100, 'bio': 90, 'history': 80})
print student1.math #prints 100
print student1.bio #prints 90
Run Code Online (Sandbox Code Playgroud)
然后这将做的伎俩:
class Student(object):
def __init__(self, first_name, last_name, id, **kwargs):
self.first_name = first_name
self.last_name = last_name
self.id = id
for key, value in kwargs.iteritems():
setattr(self, key, value)
student1 = Student("Edward", "Gates", "0456789", {'math': 100, 'bio': 90, 'history': 80})
Run Code Online (Sandbox Code Playgroud)
请注意,**kwargs将仅解包像字典或元组元组之类的内容.如果您希望发送没有键的值列表,则应使用*args.点击这里了解更多信息.