下面的代码我的一个 class ,如何将一些自定义参数在__new__中 return object.__new__(cls) 的时候传入 __init__ 呢?
比如,我在写 python2 的时候可以直接 return object.__new__(cls, arg0, arg1, **kwargs), python3.3+就不能直接这样写了。
python3.3 以上的版本在 return object.__new__(cls) 时直接传入自定义参数的时候会报出 TypeError: object() takes no parameters 。
from flask import current_app
from utils import SHA256
from orm.user import User
class UserInfo(object):
'''
用户基本信息修改类功能
'''
def __new__(cls, **kwargs):
userid = kwargs.get('id')
name = kwargs.get('name')
uid_list = current_app.config.get('USER_ID_LIST')
uname_list = current_app.config.get('USER_NAME_LIST')
if userid in uid_list or name in uname_list:
return object.__new__(cls)
return None
def __init__(self, **kwargs):
uid = kwargs.get('id')
name = kwargs.get('name')
if uid:
obj = User.query.filter_by(id=uid).first()
elif name:
obj = User.query.filter_by(name=name).first()
self.obj = obj
self.user_id = obj.id
self.user_name = obj.name
def set_pwd(self, pwd):
self.obj.passwd = SHA256(pwd)
self.obj.update()
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.