为了账号安全,请及时绑定邮箱和手机立即绑定

python 类设计的疑惑

python 类设计的疑惑

翻阅古今 2019-02-07 17:17:17
本人初学python, 在练习代码的时候想到一些问题, 如下:现在有一个User类, 抽象表示每一个user, 可以有一些属性, 比如这样:class User:     def __init__(self, form):         self.name = form.get('name', '')         self.password = form.get('password', '')现在有需求要得到所有的user实例, 目前有两种方法, 如下:法一:再创建一个UserModel类, 保存了所以的user, 并且可以进行增删改查, 比如这样:class UserModel:     def __init__(self)         self.users = []         def all(self):         return self.users法二: 直接在User类上面进行, 具体表现为使用classmethod, 比如这样:class User:     def __init__(self, form):        self.name = form.get('name', '')        self.password = form.get('password', '')          @classmethod    def all(cls):         users = [cls(form) for form in forms]        return users两种方法都可以实现相同的功能, 请问各位前辈哪种方法更好一点, 或者有没有更好的实现方法? 若能解答, 不胜感激!
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

我觉得可以在 __new__ 中对实例进行注册到一个类变量中

class User:
    users = []    def __new__(cls, *args, **kwargs):
        instance = super().__new__(cls, *args, **kwargs)
        cls.users.append(instance)        return instance
print(User.users)


查看完整回答
反对 回复 2019-02-21
  • 1 回答
  • 0 关注
  • 567 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号