Python中的__init__/__new__/__call__

  • __new__创建类的实例,用于控制新实例的创建
  • __init__ 用于new创建实例后,初始化实例变量
  • __call__ 类似于函数调用操作符,一旦在类中实现了调用,
    就可以将类实例作为函数调用来调用。

    class Foo(object):

        # 初始化实例的变量,当实例被__new__创建
        def __init__(self, name):
            self.name = name
            print('%s的__init__' % self.name)

        # __new__用于创建对象的实例
        def __new__(cls, *args, **kwargs):
            print('__new__')
            return object.__new__(cls)

        # 将对象实例作为函数被调用
        def __call__(self, a, b):
            print('__call__')
            return '%s %s' % (a, b)


    def main():
        a = Foo("a")
        print(a('hello', 'world'))


    if __name__ == '__main__':
        main()

代码的运行结果:

__new__
a的__init__
__call__
hello world

你可能感兴趣的:(Python中的__init__/__new__/__call__)