掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 471|回复: 6

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

[复制链接]

该用户从未签到

发表于 2017-8-13 18:22:08 | 显示全部楼层 |阅读模式
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?/ R9 [1 _: a( N+ i5 V9 N

$ x# X: \6 T! J# X0 j- _* U( B1 v) G
假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?
4 a: c- n# ?7 ?1 w% b8 L$ D* A# v+ t  V8 D% l$ E
  r) g/ `3 _4 P
--------------------------------------/ K8 d# y$ |7 `3 ~% B/ T

3 z0 j. D1 ~4 l# c( Qlist_全班姓名表 = [...]6 U5 C# }/ O, B# V* g0 S' z: A

- |' M/ J" z3 F; Z% @+ d& d5 p& f" l1 V: D1 C
class 人类(object):
/ H* K  O$ i2 ?3 q. e  d& m  x8 T, x; ^1 F
   def __init__(self,姓名)/ A1 v% H- Y1 T* g) k, z$ G( {$ N
. |+ x' Q2 N% W6 h* }- e# l
% o$ x( V! K$ W; W
for 姓名 in list_全班姓名表:% x/ W, q8 m2 a8 \4 t. t2 L( |
3 i' k4 x7 y% I2 C
   实例化对象的变量名怎么取??? = 人类(姓名)
1 n2 U# ]0 K1 P% U2 j8 y' l7 K' f: C: a6 W- o) O& L! Q0 z; F
-------------------------------------
! z1 ~- x4 z) _) x# a& @. i, N0 X/ b4 o: a: ^/ M& k9 v
' o; a0 Q5 b9 L* Y4 v+ p! c9 R0 [
如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取?
  • TA的每日心情

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

    [LV.1]初来乍到

    发表于 2017-8-13 21:40:18 | 显示全部楼层
    本帖最后由 slide 于 2017-8-13 21:48 编辑
    . J) l9 c: A7 `8 O& f/ U7 }+ ]- \$ E9 }% z- ?5 {
    感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?+ ~$ T8 |* ]5 A/ A( p- v/ K
    这样的话每个实例给什么变量名就不重要,甚至可以不给。
  • 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+ b2 q* Q" \8 T0 B0 m
    [人类(姓名) for 姓名 in list_全班姓名表]
    1 M5 a! V% R7 E
    把所有的实例放在了一个列表中

    该用户从未签到

     楼主| 发表于 2017-8-15 15:10:13 | 显示全部楼层
    slide 发表于 2017-8-13 21:40
    + E  H& }- [/ n7 s' V感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则 ...
    / W$ p5 b0 f9 Q7 e# z" `9 m
    嗯, 主要是考虑到如果没有名字, 如何区分来调用这一堆实例的问题. 不过我现在已经有答案了,的确可以通过列表中的索引来调用, 虽然列表这个方法还是有一些别扭,因为必须记住不同索引号和姓名的一一对应关系. 不过如果换做字典来存储,会更好些

    该用户从未签到

    发表于 2017-8-18 21:47:28 | 显示全部楼层
    "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?+ o+ Y& I1 p( K! L( Z) n

      G) o; u& \1 c! z- w- {前面有朋友提到用 list comp -- [ processing_x for x in y ],  这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。/ w* l- ~6 P' g2 W! T$ |  V: d, _
    如果顺序不是很重要 可以考虑使用set.' h" R1 u" s0 B; y  C3 x

    2 W9 I; l* g+ C" J( c9 c. H“不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。" a& a. W1 l# \7 `

      @" o3 f2 J+ \( f

    该用户从未签到

    发表于 2017-10-24 04:39:48 | 显示全部楼层
    姓名 = 人类(姓名)
    9 J7 M" Y6 K9 O
    # }1 |  M7 [  B; U% y, s; B. L如果英文的话,可以用
    6 x% E1 @8 D4 L7 f5 R! b! x姓名.lower() = 人类(姓名)
    + n) j  y1 J- v+ E! n/ y; I
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 12:36 , Processed in 0.045245 second(s), 9 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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