本人初学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)
添加回答
举报
0/150
提交
取消
