遇到一个问题:
要求实现以下结果:
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'