掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 488|回复: 6

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

[复制链接]

该用户从未签到

发表于 2017-8-13 18:22:08 | 显示全部楼层 |阅读模式
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?
9 z/ s+ H: h0 b: H( p
) o2 r' X5 J' V% u9 @$ t( {8 ~. p" e; @! ^
假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?
/ X/ ]3 Q& U3 |/ m# [% U& q. k) W
; ]* N6 R5 ]8 c' S* d* W" W1 a; x5 b: E3 V2 y5 l1 I
--------------------------------------
+ _! W8 @- |, w% J; p" O
# W, T/ k& h) A0 f6 \* Wlist_全班姓名表 = [...]$ }- E$ {/ P0 F* x- L

) P/ r& r0 h9 g- t
! U$ ^* B! x2 y$ Y& ?- H- @5 L( ?1 `class 人类(object):3 A2 d2 Q+ K: D. ]9 b- d' a

" @3 L, L& S* R+ W* t. d   def __init__(self,姓名)9 J# |: g* m5 K$ ]! q+ h
5 b, |8 b7 R4 l+ n% K, G

% F- k1 o2 g8 i0 {for 姓名 in list_全班姓名表:
0 h, r9 w' Q. ?  P2 w- V# B! x7 U
   实例化对象的变量名怎么取??? = 人类(姓名)
; K- \: ?% A& z* W* |& F
( V+ J7 x/ [" T: U7 t" m5 g-------------------------------------
: ]# i0 `" Y# Y- M6 Q6 w
' j6 e* f1 r- S8 W1 g0 [( C0 F1 K# m7 S7 I3 T
如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取?
  • TA的每日心情

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

    [LV.1]初来乍到

    发表于 2017-8-13 21:40:18 | 显示全部楼层
    本帖最后由 slide 于 2017-8-13 21:48 编辑
    1 i, e5 Z& f4 r+ T4 J; N, ?# m, d. K' s! u- T* H7 [# D9 H/ p) a
    感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?
    ( a! n& o9 E& H, m! w这样的话每个实例给什么变量名就不重要,甚至可以不给。
  • 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
    ) H  D5 [/ E" {3 f- P7 G" ~[人类(姓名) for 姓名 in list_全班姓名表]
    % O. a5 ]8 \7 x" }
    把所有的实例放在了一个列表中

    该用户从未签到

     楼主| 发表于 2017-8-15 15:10:13 | 显示全部楼层
    slide 发表于 2017-8-13 21:40) x7 X( g. }" g9 \' q
    感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则 ...
    : G* j' h- I# y
    嗯, 主要是考虑到如果没有名字, 如何区分来调用这一堆实例的问题. 不过我现在已经有答案了,的确可以通过列表中的索引来调用, 虽然列表这个方法还是有一些别扭,因为必须记住不同索引号和姓名的一一对应关系. 不过如果换做字典来存储,会更好些

    该用户从未签到

    发表于 2017-8-18 21:47:28 | 显示全部楼层
    "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?
    0 ^/ P# ~& K- M2 N
    / h' g6 j3 I; ?5 \- E3 |) U% j前面有朋友提到用 list comp -- [ processing_x for x in y ],  这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。3 p- @; P2 d9 Z7 a3 u3 K. r3 f
    如果顺序不是很重要 可以考虑使用set.* }) ?" |2 x) A! Z. l

    ) `9 m, e  r$ n. f“不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。
    - R, w% T7 @$ G* w# C( e$ i0 m' n, {7 g* f. Y; f& P$ G

    该用户从未签到

    发表于 2017-10-24 04:39:48 | 显示全部楼层
    姓名 = 人类(姓名)9 @! u8 L: y. y- k
    ( {+ z2 @4 a  A4 V  S# M' ^
    如果英文的话,可以用: b: R. P; ^* n2 O
    姓名.lower() = 人类(姓名)+ x# z* ?! V7 K  a4 f- j
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-6-1 03:33 , Processed in 0.063589 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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