V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
YUX
V2EX  ›  问与答

请问如何历遍 Python 类的所有成员?

  •  
  •   YUX · 2016-06-07 21:37:23 +08:00 · 1415 次点击
    这是一个创建于 2873 天前的主题,其中的信息可能已经有所发展或是发生改变。
    class Student(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
    bart = Student('Bart Simpson', 59)
    emma = Student('Emma Watosn', 100)
    

    请问如何历遍 Student 的所有成员 bart 和 emma?

    5 条回复    2016-06-08 10:52:36 +08:00
    zwzmzd
        1
    zwzmzd  
       2016-06-07 21:49:04 +08:00 via Android
    提个简单思路: filter 对应作用域中的所有对象
    htfy96
        2
    htfy96  
       2016-06-07 21:50:16 +08:00
    https://stackoverflow.com/questions/328851/printing-all-instances-of-a-class

    1. 加个类成员 instance[], __init__里把 self 弱引用加到数组里
    2. 用 gc 模块遍历所有存活对象, 用 isinstance 判断

    相对来说 1 更好一点, 但搞出这种需求一般是设计有一定问题
    Fallenwood
        3
    Fallenwood  
       2016-06-07 21:51:52 +08:00 via Android
    Fallenwood
        4
    Fallenwood  
       2016-06-07 21:58:22 +08:00 via Android
    看错需求了。。。
    搞个数组记录吧。。。
    WinterWu
        5
    WinterWu  
       2016-06-08 10:52:36 +08:00 via iPhone
    怎么做有很多方法,但是二楼说的很对。这个需求有错误!先要搞清楚目的是什么?比如要管理所有学生,以班级分,那应该有个班级类,内置数组。需求要清楚,抽象关系清晰,就不会提出这种问题了。除非是要 hack ,否则不应该有这种需求。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2488 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:43 · PVG 23:43 · LAX 08:43 · JFK 11:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.