python3 新式类_python3.3 以上版本的新式类中,如何在同时覆盖 __new__ 和 __init__ 时,将自定义的额外参数从 __new__ 传入 __init__ ?...

下面的代码我的一个 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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值