掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 474|回复: 6

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

[复制链接]

该用户从未签到

发表于 2017-8-13 18:22:08 | 显示全部楼层 |阅读模式
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?
7 y7 q1 Z3 V4 Q
& Z- s0 N* b/ ^
9 X# k: h1 n2 ]1 t+ h1 B假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?  L/ M* Y  y/ F
: ?# {4 a' O& L* ^, O/ ~- {
) E! Z2 V: M/ h/ D/ X5 U
--------------------------------------
3 M6 j0 l. |: @" L# d. ]2 Q2 H8 k+ m% I1 I2 U9 C4 E# M
list_全班姓名表 = [...]
% M5 ?, c- y0 F0 z, L4 B1 Z2 [. x) N( q

( r$ _3 T) _# g; M2 C' \, T6 R& xclass 人类(object):( u. d* e. u0 a
& g, n3 @/ t3 d5 o6 J. X/ U4 {
   def __init__(self,姓名)  |! `" D& H* h# u
7 K% n, Q4 _9 E

  T! f. r% \( M9 k1 c! ffor 姓名 in list_全班姓名表:
6 H* ^/ ^* `; j8 M1 `
$ f. [/ y( J) o4 M   实例化对象的变量名怎么取??? = 人类(姓名)1 B4 ^# K' D- l" d; C, q

) x) K2 ?# m* K3 V4 R3 |) A3 F-------------------------------------
! n* v2 _, v. e& }7 [6 Z9 P; `3 a# @  J, z# q! B9 k: x& ]

9 q7 V0 A. m, }2 z( [7 w如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取?
  • TA的每日心情

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

    [LV.1]初来乍到

    发表于 2017-8-13 21:40:18 | 显示全部楼层
    本帖最后由 slide 于 2017-8-13 21:48 编辑 ) \/ I; X5 Y* e3 @7 m

    % ?3 C% N- |! E6 _9 _感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?
    % r1 F8 E; {& G3 E% t4 D这样的话每个实例给什么变量名就不重要,甚至可以不给。
  • 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
    ; W* d% `1 Y* p4 e$ f9 o- `$ n[人类(姓名) for 姓名 in list_全班姓名表]

    - V' A6 Q5 V: Y! w( b: u8 B把所有的实例放在了一个列表中

    该用户从未签到

     楼主| 发表于 2017-8-15 15:10:13 | 显示全部楼层
    slide 发表于 2017-8-13 21:40+ @2 |# h6 G, {: c# Y/ v! A
    感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则 ...
    ' e: ~( d* g: @& _5 s5 z/ m
    嗯, 主要是考虑到如果没有名字, 如何区分来调用这一堆实例的问题. 不过我现在已经有答案了,的确可以通过列表中的索引来调用, 虽然列表这个方法还是有一些别扭,因为必须记住不同索引号和姓名的一一对应关系. 不过如果换做字典来存储,会更好些

    该用户从未签到

    发表于 2017-8-18 21:47:28 | 显示全部楼层
    "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?" K1 G4 y* u6 G* m( v8 E
    ( F. J! E/ w7 Y! z& w' e* g
    前面有朋友提到用 list comp -- [ processing_x for x in y ],  这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。$ L1 K2 V: |- \1 Y& g: [$ N
    如果顺序不是很重要 可以考虑使用set.+ @% s3 M" z' o0 l* D. u( x
    $ S* a( i; \- K9 y
    “不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。
    8 {# [" q- |/ r$ ~: l$ N& Z$ J- p/ y$ N9 G# w' g9 y7 K1 o( K4 O  I1 _

    该用户从未签到

    发表于 2017-10-24 04:39:48 | 显示全部楼层
    姓名 = 人类(姓名); F2 p. [' _0 A8 ]. |. T

    : j8 i) F; v3 B1 k. K2 m如果英文的话,可以用4 U8 i) c% K7 E, S( K2 K* I. t
    姓名.lower() = 人类(姓名)! |7 l) W" @8 z: i
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 19:28 , Processed in 0.035302 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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