我必须将name和student_num放在字典中。 问题是我不知道如何在课堂上调用字典?我怎么能以这种格式输入name和student_num?
class Cool():
def __init__(self, name, student_num, new_dict):
self._key = name
self._value = student_num
self._new_dict = new_dict
def get_name(self):
return self._key
def get_student_number(self):
return self._value
def new_dict(self):
return self._new_dict
# I want to put name and student_name in this format:
# {'name': 'student name'}
def get_dict(self, new_dict):
self._new_dict = {}
self._new_dict[self._key] = self._value
return self._new_dict[self._key]
def __str__(self):
return str(self._new_dict[self._key])
现在我测试这段代码
>>>a = Cool({}, 'diana', 1234)
>>>print(a)
我收到以下错误:
文件" C:\ Program Files(x86)\ Wing IDE 101 5.0 \ src \ debug \ tserver_sandbox.py",第20行, str builtins.TypeError:' int'对象不可订阅
答案 0 :(得分:1)
你的电话很酷。
尝试:
>>>a = Cool('diana', 1234, {})
更多建议:
class Cool():
def __init__(self, name, student_num, new_dict):
self._key = name
self._value = student_num
self._new_dict = new_dict
def get_name(self):
return self._key
def get_student_number(self):
return self._value
def get_dict(self):
self._new_dict[self._key] = self._value
return self._new_dict[self._key]
def __str__(self):
return str(self._new_dict[self._key])
为了让print
工作(代码当前的方式)。你需要先调用get_dict。
您可以执行以下操作:
a = Cool('diana', 1234, {})
print(a.get_dict())
或者您可以编辑代码以便更早地处理dict。
答案 1 :(得分:0)
编辑问题,
>>>a = Cool({}, 'diana', 1234)
这样做:
class Cool():
def __init__(self, name, student_num, new_dict):
self._key = name # name is {}
self._value = student_num # student_num is 'diana'
self._new_dict = new_dict # new_dict is 1234
然后
>>print(a)
这样做:
def __str__(self):
return str(self._new_dict[self._key])
=> _new_dict is 1234
=> return 1234[self._key]
=> self._key is {}
=> return 1234[{}]
=> TypeError: 'int' object is not subscriptable
something[]
是一个下标,一个切片,操作,Python不能用数字来做。
我不清楚整个代码应该做什么,但它看起来比它需要的代码多几倍。我假设其中一些是由分配要求强制实施的?
你是否为每个学生创建一个“酷”课程?还是为很多学生准备的“酷”课程?它看起来像是不确定的那一刻 - 如果它是每个学生一个Cool课程,将一个名字放在字典中并再次取出它不会给课程增加任何东西。如果它是很多学生的一个Cool课程,那么get_name
没有意义,因为会有很多名字,而get_student_number
需要一种方法来识别哪个学生。