关于python中__new__的用法

遇到一个问题:

要求实现以下结果:  

a = A(1, 'name')
print a == 1  #True
print a.name == 'name' #True

也就是构造一个A类,使得实例的值等于int类型的1,实例的name属性为字符串类型的'name'。


可以用__new__这个魔术方法解决,它会在__init__之前调用,构造对象,且返回值.

class A(int):
    def __new__(cls, id, name):                                                 
        obj = int.__new__(cls, id)
        obj.name = name
        return obj

a = A(1, 'name')
print a == 1
print a.name == 'name'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值