掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 473|回复: 6

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

[复制链接]

该用户从未签到

发表于 2017-8-13 18:22:08 | 显示全部楼层 |阅读模式
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?4 P& I2 X/ _9 f+ _0 v; k; G
- j- S! @9 s7 b% V  V9 U

! x2 X' _1 R' a1 N. b假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?  w4 K- {* k) N) c7 }

8 n0 Y- t1 A/ M4 `8 }5 V. `5 Q, {$ R) o  h2 f( t9 p" ?
--------------------------------------
8 p3 Z, c* O3 n; S$ {! h' h2 W! [% Y8 x8 O
list_全班姓名表 = [...]3 D1 N8 v$ F$ }. o: S' h  G% c( w

1 L1 f# K& V, V6 M- V+ Q6 Y
" d4 @" a0 E9 {9 c* N/ V+ cclass 人类(object):  B/ i$ H  [& Y: h7 v
" X: p1 e/ Q% j' H/ F
   def __init__(self,姓名)
" T! |* |' E- Q; b  O( m: A, Q$ N
5 K/ Y' f4 Y3 |
5 R+ S: D0 z  c' ?/ xfor 姓名 in list_全班姓名表:
: H, w$ h2 w% @: L. n! }+ }+ V9 V5 B5 b  |- [) X  F
   实例化对象的变量名怎么取??? = 人类(姓名)
, w4 w; H; L4 E' y4 f5 N
0 L/ ]0 M+ k- K% D* K' m-------------------------------------' S% o4 j3 }6 y; F
, }' K2 ?2 Y2 t/ d: p7 f) `* n

) _% n$ |% M4 [6 u5 ?' \$ W- Z如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取?
  • TA的每日心情

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

    [LV.1]初来乍到

    发表于 2017-8-13 21:40:18 | 显示全部楼层
    本帖最后由 slide 于 2017-8-13 21:48 编辑
    % a& p2 w4 R& I
    $ s! r9 y5 ?& I5 ?) u& u感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?
    4 J( ]1 W) O$ @; l, h  a4 n$ M这样的话每个实例给什么变量名就不重要,甚至可以不给。
  • TA的每日心情
    无聊
    2021-9-17 23:16
  • 签到天数: 341 天

    [LV.8]以坛为家I

    发表于 2017-8-13 23:20:39 | 显示全部楼层
    [人类(姓名) for 姓名 in list_全班姓名表]

    该用户从未签到

     楼主| 发表于 2017-8-15 15:06:38 | 显示全部楼层
    wantyu 发表于 2017-8-13 23:20, W1 L0 e, o$ {7 C% T" f
    [人类(姓名) for 姓名 in list_全班姓名表]

    # @1 ]  j; g: @6 L把所有的实例放在了一个列表中

    该用户从未签到

     楼主| 发表于 2017-8-15 15:10:13 | 显示全部楼层
    slide 发表于 2017-8-13 21:40' A  r$ I- v  R1 U% z) _( L
    感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则 ...

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

    该用户从未签到

    发表于 2017-8-18 21:47:28 | 显示全部楼层
    "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?
    5 y; ?2 P/ x! Q. i( q# x
    7 f8 R& v9 X4 \- I0 `$ T前面有朋友提到用 list comp -- [ processing_x for x in y ],  这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。
    ! x( T  z8 F, m9 K! L1 z/ l如果顺序不是很重要 可以考虑使用set.
    & G* V  W4 v! A, ~) T9 _, ?* j
    : R8 L8 c: p. |( c3 T“不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。
    3 x$ A$ Y( z5 P: F5 o' @* b- n* a1 Z2 l

    该用户从未签到

    发表于 2017-10-24 04:39:48 | 显示全部楼层
    姓名 = 人类(姓名)
    2 a! R: [4 N; C5 l1 [/ u2 V2 y* o+ G$ y  \0 `3 Y3 `4 Q
    如果英文的话,可以用
    * `3 c1 U, m: E姓名.lower() = 人类(姓名)
    / a# F% L* _; k& W( N. @
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-27 17:27 , Processed in 0.032225 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表