掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 472|回复: 6

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

[复制链接]

该用户从未签到

发表于 2017-8-13 18:22:08 | 显示全部楼层 |阅读模式
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?
7 g; r. Q/ {# u" Y
/ M" w" F2 m4 _6 t3 C- \4 V0 p2 D& g% z& R3 N- o
假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?
# T- Q: h" H- R! F
# e8 Z! A6 Y- K3 s1 j& L  m
& v- L  T. i) x0 y--------------------------------------2 L; X" ]# p* f. z, f

: ?5 r) @$ C/ I- P9 D# ulist_全班姓名表 = [...]
4 h0 ~( [0 Y$ u& C  a& V7 s+ a( s, m; [( m1 v( f, f. {5 _( _" C

2 k$ n$ T( x3 {+ xclass 人类(object):+ o) [* c9 s2 s0 u! b" k

& v' t# ^5 n: |   def __init__(self,姓名)( Y# r* R" |; z: c: ~2 Q/ M
3 W9 ?; w, U8 d- u1 g

, }- v% u$ r5 ]+ Nfor 姓名 in list_全班姓名表:
4 D% ]$ n6 [- A( u% \5 V" {  w7 e3 B" N) x  j  h
   实例化对象的变量名怎么取??? = 人类(姓名)
+ s: _8 Q$ E0 D& F9 b
# m* _, D6 p" a6 u$ o-------------------------------------0 z" F! u* Q# f$ X. I* m; p; o2 z
" [5 j3 @; V2 G* v4 g$ ~
& E3 I) r( ~3 Y- z, C) i
如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取?
  • TA的每日心情

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

    [LV.1]初来乍到

    发表于 2017-8-13 21:40:18 | 显示全部楼层
    本帖最后由 slide 于 2017-8-13 21:48 编辑 " Y, u# ]) K7 g7 o/ V
    5 w9 @1 |; `  u' ^; ^/ u
    感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?9 S2 Z! i8 J: x# J! @- T
    这样的话每个实例给什么变量名就不重要,甚至可以不给。
  • 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:209 X/ c5 g  {" R. S+ B- T
    [人类(姓名) for 姓名 in list_全班姓名表]

    . H( `: l4 Q. w+ V把所有的实例放在了一个列表中

    该用户从未签到

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

    该用户从未签到

    发表于 2017-8-18 21:47:28 | 显示全部楼层
    "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?2 f1 N9 D  G9 t6 v! T0 l' l4 [

    ; X, V" i+ {# \2 \# e: |前面有朋友提到用 list comp -- [ processing_x for x in y ],  这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。4 [* D2 N9 C. n6 E
    如果顺序不是很重要 可以考虑使用set.
    , R( |' s6 z9 h/ j/ k% |3 ]8 ^
    : D9 y4 m8 h, G: X+ S“不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。. s( P' n, ~/ H8 [
    2 n2 ]9 Y& ~0 m. U

    该用户从未签到

    发表于 2017-10-24 04:39:48 | 显示全部楼层
    姓名 = 人类(姓名)
    : ]. e4 B: O# C+ N. C- R0 ?% b9 l/ X! |. q" H- t6 N
    如果英文的话,可以用5 R7 q. g4 l) M
    姓名.lower() = 人类(姓名)8 [; g& r* g1 X! o* g3 H# f
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 14:41 , Processed in 0.035227 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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