问一个python的问题,虽然和字典无关,但咱论坛高人多呀
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?
--------------------------------------
list_全班姓名表 = [...]
class 人类(object):
def __init__(self,姓名)
for 姓名 in list_全班姓名表:
实例化对象的变量名怎么取??? = 人类(姓名)
-------------------------------------
如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取? 本帖最后由 slide 于 2017-8-13 21:48 编辑
感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?
这样的话每个实例给什么变量名就不重要,甚至可以不给。 [人类(姓名) for 姓名 in list_全班姓名表] wantyu 发表于 2017-8-13 23:20
[人类(姓名) for 姓名 in list_全班姓名表]
把所有的实例放在了一个列表中 slide 发表于 2017-8-13 21:40
感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则 ...
嗯, 主要是考虑到如果没有名字, 如何区分来调用这一堆实例的问题. 不过我现在已经有答案了,的确可以通过列表中的索引来调用, 虽然列表这个方法还是有一些别扭,因为必须记住不同索引号和姓名的一一对应关系. 不过如果换做字典来存储,会更好些 "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?
前面有朋友提到用 list comp -- [ processing_x for x in y ],这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。
如果顺序不是很重要 可以考虑使用set.
“不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。
姓名 = 人类(姓名)
如果英文的话,可以用
姓名.lower() = 人类(姓名)
页:
[1]