本人初學(xué)python, 在練習(xí)代碼的時(shí)候想到一些問題, 如下:現(xiàn)在有一個(gè)User類, 抽象表示每一個(gè)user, 可以有一些屬性, 比如這樣:class User:
def __init__(self, form):
self.name = form.get('name', '')
self.password = form.get('password', '')現(xiàn)在有需求要得到所有的user實(shí)例, 目前有兩種方法, 如下:法一:再創(chuàng)建一個(gè)UserModel類, 保存了所以的user, 并且可以進(jìn)行增刪改查, 比如這樣:class UserModel:
def __init__(self)
self.users = []
def all(self):
return self.users法二: 直接在User類上面進(jìn)行, 具體表現(xiàn)為使用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兩種方法都可以實(shí)現(xiàn)相同的功能, 請問各位前輩哪種方法更好一點(diǎn), 或者有沒有更好的實(shí)現(xiàn)方法? 若能解答, 不勝感激!
1 回答

慕哥9229398
TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
我覺得可以在 __new__
中對實(shí)例進(jìn)行注冊到一個(gè)類變量中
class User: users = [] def __new__(cls, *args, **kwargs): instance = super().__new__(cls, *args, **kwargs) cls.users.append(instance) return instance print(User.users)
添加回答
舉報(bào)
0/150
提交
取消