美文网首页
Python中的__init__/__new__/__call_

Python中的__init__/__new__/__call_

作者: JM68 | 来源:发表于2018-06-12 20:46 被阅读0次
  • __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_

      本文链接:https://www.haomeiwen.com/subject/fvgreftx.html