美文网首页
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