掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 465|回复: 6

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

[复制链接]

该用户从未签到

发表于 2017-8-13 18:22:08 | 显示全部楼层 |阅读模式
python中,如果从一个类批量实例化对象,这些对象的变量名该怎么写?
8 h4 J# b0 o/ B) B2 {
/ M" h( O- ~4 W) x! R+ W+ d1 n  M- E" s  V
假设, 我从一个 "人类",批量生成一个班级的实例化对象(假设有40人,我把这些名字放在一个列表中), 这些实例化的对象的变量名,应该就是每个同学的名字, 但是用for循环的话, 怎么命名这些实例呢? 如何能把列表中的元素的值, 变成每个实例的变量名呢?' s7 E" A. U2 m7 t/ h
  ]# E& B/ k* h. r# v

) J6 x" i. M1 v/ r0 ]--------------------------------------2 Y% E; P* S) Y% u

+ y, Z$ c9 c/ C" K- }! `+ _) Glist_全班姓名表 = [...]
: P, b9 }7 b5 ]) _8 E2 c: k- L& \2 s0 T- b
/ }  T( w: M. T
class 人类(object):
$ p3 T% z* g! I6 i' N) M; R! {) L, s3 @& a1 e; m9 H- H
   def __init__(self,姓名)6 [' Q  e9 p% m* a) G& t" A
6 {& Z! F  F3 Z. I
4 ^# g' l8 K9 h$ n  @
for 姓名 in list_全班姓名表:, t6 l* P% |. E# W* v4 }# r  [8 ^
3 y0 n5 d* m) i4 A# Q. D# _2 p
   实例化对象的变量名怎么取??? = 人类(姓名)
( x0 ^# L$ m0 n# r0 b% L. q9 ]; k2 f; o( j0 Z
-------------------------------------
: ]+ d+ s: o* w! l7 t+ ^. o% w( m' u
6 ]' w4 s0 q- F$ z, a" k0 T% g! M: L3 ]
# K2 s7 N$ p% ^; t如果我这个思路不对, 那批量实例化时, 这些实例的变量名该怎么取?
  • TA的每日心情

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

    [LV.1]初来乍到

    发表于 2017-8-13 21:40:18 | 显示全部楼层
    本帖最后由 slide 于 2017-8-13 21:48 编辑 9 u8 e, w8 ^2 e) X

    - V8 s. O0 w4 q2 \( c: G' ^8 i感觉你要表达的意思是,一个人类的类包含一个叫姓名的data attribute,而人类的实例中的那个姓名变量的值则是这个人的名字,对吧?
    ! A5 f" u" T9 k+ e: S6 ^) A  A这样的话每个实例给什么变量名就不重要,甚至可以不给。
  • 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:208 @, K9 q. H4 s2 z
    [人类(姓名) for 姓名 in list_全班姓名表]
    1 ~# |" }2 O% u/ z* ^" l
    把所有的实例放在了一个列表中

    该用户从未签到

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

    该用户从未签到

    发表于 2017-8-18 21:47:28 | 显示全部楼层
    "通过列表中的索引来调用" -- 是否要考虑效率的问题? 将来你的系统一旦要扩大(scale up)呢?7 r; {, P2 p' h$ _$ Y
    8 a0 R  b2 m* X" H6 u8 I, n
    前面有朋友提到用 list comp -- [ processing_x for x in y ],  这个效率会大大高于 for loop的。但这个只能做一点简单的处理吧。
    5 T1 u! l( ?- w0 M: {/ L如果顺序不是很重要 可以考虑使用set.
    5 w! C2 k# h2 x& n' o: l
    5 ?8 C0 w8 L' r0 `' Y' Q“不过如果换做字典来存储,会更好些” -- 是的,dict 的存储方式, 使得读取的效率大大提高。
    0 _/ B; g; x, u8 y" }  b8 K) o7 C/ z" [6 O4 s% z& n3 {

    该用户从未签到

    发表于 2017-10-24 04:39:48 | 显示全部楼层
    姓名 = 人类(姓名)
    6 @# ~- k+ Y" q  K6 c0 d- f/ @9 p- N1 F; b& F; z% a7 b3 Y8 ?
    如果英文的话,可以用
    2 W; ]4 i6 a8 N9 u- ^( _姓名.lower() = 人类(姓名)$ O9 a1 a% s4 P+ J! y+ m
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-3-28 16:50 , Processed in 0.028721 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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