python 类设计的疑惑

发布于 2022-09-11 17:13:48 字数 1003 浏览 40 评论 0

本人初学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

两种方法都可以实现相同的功能, 请问各位前辈哪种方法更好一点, 或者有没有更好的实现方法? 若能解答, 不胜感激!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彡翼 2022-09-18 17:13:48

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

class User:
    users = []
    def __new__(cls, *args, **kwargs):
        instance = super().__new__(cls, *args, **kwargs)
        cls.users.append(instance)
        return instance
print(User.users)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文