python中__new__和__init__的区别

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 = name
        self.age = age

    def __str__(self):
        return '<Person: %s(%s)>' % (self.name, self.age)


if __name__ == '__main__':
    piglei = Person('piglei', 24)
    print(piglei)

posted @ 2025-08-04 14:49  浮尘~若梦  阅读(6)  评论(0)    收藏  举报