关于python中__new__的用法

来源:互联网 发布:手机能开通淘宝店吗 编辑:程序博客网 时间:2024/06/06 10:06

遇到一个问题:

要求实现以下结果:  

a = A(1, 'name')print a == 1  #Trueprint 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 == 1print a.name == 'name'