Python中__new__方法是在一个类对象实例化的时候调用的第一个方法,它的第一个参数是这个类对象(cls),而其他的参数会直接传递给__init__方法,它通常会返回这个类对象的一个实例对象,当然你也可以重写__new__方法使其放回自己想要的结果.
例如:要设计一个类使其尽量简单的返回摄氏度到华氏度的转换
>>>print(C2F(25))
77
可以通过重写__new__方法简练的达到我们想要的效果
重写int类使其传入字符串如果可以转换成数字型则输出数字,不能则输出字符串的ASCII码值的和
>>>print(Nint('123'))
123
>>>print(Nint('B'))
66
//===============摄氏到华氏转换===============
class C2F(float):
def __new__(cls, arg = 0.0):
return float.__new__(cls, arg*1.8 + 32)
//===============int类===============
class Nint(int):
def __new__(cls, arg = 0)
sums = 0
if isinstance(arg, str):
for each in arg:
sums += ord(each) #ord()取字符的ASCII值
arg = sums
return int.__new__(cls, arg)