掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 694|回复: 6

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

[复制链接]

该用户从未签到

发表于 2017-8-13 18:22:08 | 显示全部楼层 |阅读模式
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?+ M, B8 p7 _4 x8 I% |' p& B
  g$ d. S+ }! F) B5 J; P

! j  F: z, p" d* B7 q+ b假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?- E1 O6 R5 G) N- a5 `# u4 K! j/ V. B
! `* q* r% x' F: f/ o7 I
- H4 P2 T7 C- R1 ~& i
--------------------------------------
  T! o( v# t* r' M+ K* l$ y! ~' j# T
. A& c, s, g# g0 _% f4 _, p; m# _+ Ulist_全班姓名表 = [...]0 Q, K/ Q' }& g. b
: o& o$ {: l8 B0 h

" O' Z* h$ ?% ^& B3 `class 人类(object):
6 T/ ?/ r- X( z2 t  T$ f3 e
$ y. [) z" ?2 M1 b   def __init__(self,姓名)) i4 @% _+ X: n! n5 v

  o1 v3 f+ i# r2 ~7 l3 l8 H- B& X0 M! a( A
for 姓名 in list_全班姓名表:" f8 z' p% d$ t9 p2 p9 v
" p; i" J( v$ o* u) c
   实例化对象的变量名怎么取??? = 人类(姓名)7 U  h; r( M+ c  K

6 f  y& s- U  A* ]$ w/ S5 t-------------------------------------/ r5 K4 u) r* U* f9 w( }! s
. L6 X( ]! a* y& B6 t' L% x+ A

9 z7 R6 m" A- Y% I如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取?
  • TA的每日心情

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

    [LV.1]初来乍到

    发表于 2017-8-13 21:40:18 | 显示全部楼层
    本帖最后由 slide 于 2017-8-13 21:48 编辑
    / y/ U0 p$ e0 _* Q7 K8 {: n2 O
    ! Y" m4 N  q. ~' y感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?1 `0 J2 u$ y; `2 Y3 B) y9 U0 b* n2 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:203 ?% U3 V" H% E% L8 \. M4 U1 A
    [人类(姓名) for 姓名 in list_全班姓名表]

    & u5 P. Q& B) I把所有的实例放在了一个列表中

    该用户从未签到

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

    该用户从未签到

    发表于 2017-8-18 21:47:28 | 显示全部楼层
    "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?
    ! g2 e9 n6 e1 ~
    % O' N5 g2 _' I9 [/ m0 f# a前面有朋友提到用 list comp -- [ processing_x for x in y ],  这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。
    . }( d, W2 v" \6 J如果顺序不是很重要 可以考虑使用set.
    % R4 G* @" q8 b# x9 d3 o" w, P9 P
    “不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。
    4 q; d+ @( D/ W9 D
    0 |, C5 ~- O% L# N! R

    该用户从未签到

    发表于 2017-10-24 04:39:48 | 显示全部楼层
    姓名 = 人类(姓名)- K0 Y0 @" i7 Y, u7 ^# e7 V: D

    - Q& o2 _; b/ {如果英文的话,可以用
    7 o3 x% x# [: W  U! n6 j姓名.lower() = 人类(姓名)
    # K. w/ V% E# L2 Z$ e
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-12 11:32 , Processed in 0.021289 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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