查看: 388|回复: 6
打印 上一主题 下一主题

[求助] 问一个python的问题,虽然和字典无关,但咱论坛高人多呀

[复制链接]

该用户从未签到

17

主题

85

回帖

727

积分

举人

Rank: 4

积分
727

灌水大神章小蜜蜂章笑傲江湖章

跳转到指定楼层
1
发表于 2017-8-13 18:22:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?


假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?


--------------------------------------

list_全班姓名表 = [...]


class 人类(object):

   def __init__(self,姓名)


for 姓名 in list_全班姓名表:

   实例化对象的变量名怎么取??? = 人类(姓名)

-------------------------------------


如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取?
  • TA的每日心情

    2017-9-26 23:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    2

    主题

    16

    回帖

    550

    积分

    举人

    Rank: 4

    积分
    550

    灌水大神章

    2
    发表于 2017-8-13 21:40:18 | 只看该作者
    本帖最后由 slide 于 2017-8-13 21:48 编辑

    感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?
    这样的话每个实例给什么变量名就不重要,甚至可以不给。
  • TA的每日心情
    无聊
    2021-9-17 23:16
  • 签到天数: 341 天

    [LV.8]以坛为家I

    9

    主题

    418

    回帖

    6067

    积分

    会元

    Rank: 7Rank: 7Rank: 7

    积分
    6067

    灌水大神章小蜜蜂章笑傲江湖章

    3
    发表于 2017-8-13 23:20:39 | 只看该作者
    [人类(姓名) for 姓名 in list_全班姓名表]

    该用户从未签到

    17

    主题

    85

    回帖

    727

    积分

    举人

    Rank: 4

    积分
    727

    灌水大神章小蜜蜂章笑傲江湖章

    4
     楼主| 发表于 2017-8-15 15:06:38 | 只看该作者
    wantyu 发表于 2017-8-13 23:20
    [人类(姓名) for 姓名 in list_全班姓名表]

    把所有的实例放在了一个列表中

    该用户从未签到

    17

    主题

    85

    回帖

    727

    积分

    举人

    Rank: 4

    积分
    727

    灌水大神章小蜜蜂章笑傲江湖章

    5
     楼主| 发表于 2017-8-15 15:10:13 | 只看该作者
    slide 发表于 2017-8-13 21:40
    感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则 ...

    嗯, 主要是考虑到如果没有名字, 如何区分来调用这一堆实例的问题. 不过我现在已经有答案了,的确可以通过列表中的索引来调用, 虽然列表这个方法还是有一些别扭,因为必须记住不同索引号和姓名的一一对应关系. 不过如果换做字典来存储,会更好些

    该用户从未签到

    2

    主题

    160

    回帖

    2971

    积分

    解元

    Rank: 5Rank: 5

    积分
    2971

    灌水大神章

    6
    发表于 2017-8-18 21:47:28 | 只看该作者
    "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?

    前面有朋友提到用 list comp -- [ processing_x for x in y ],  这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。
    如果顺序不是很重要 可以考虑使用set.

    “不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。

    该用户从未签到

    58

    主题

    933

    回帖

    3897

    积分

    被盗用户

    积分
    3897

    灌水大神章小蜜蜂章笑傲江湖章

    7
    发表于 2017-10-24 04:39:48 | 只看该作者
    姓名 = 人类(姓名)

    如果英文的话,可以用
    姓名.lower() = 人类(姓名)