Python中new方法的应用

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)


你可能感兴趣的:(Python)