python:: __new__和__init__的区别如下
__new__是一个静态方法,而__init__是一个实例方法.
__new__方法会返回一个创建的实例,而__init__什么都不返回.
只有在__new__返回一个cls的实例时后面的__init__才能被调用.
当创建一个新实例时调用__new__,初始化一个实例时用__init__.
# -*- coding: utf-8 -*-class Person(object):"""Silly Person"""def __new__(cls, name, age):print ('__new__ called.')return super(Person, cls).__new__(cls)def __init__(self, name, age):print('__init__ called.')self.name = nameself.age = agedef __str__(self):return '<Person: %s(%s)>' % (self.name, self.age)if __name__ == '__main__':piglei = Person('piglei', 24)print(piglei)