zoukankan      html  css  js  c++  java
  • day23-2 __call__、__str__和__del__

    __call__

    • 对象后面加括号调用时,会自动触发执行
    • 注:构造方法的执行是由创建对象触发的,即:对象=类名();而对于__call__方法的执行是由对象后加括号触发的,即:对象()或者类()()
    class Foo:
        def __init__(self, name, age):
            print('from init')
        
        def __call__(self, *args, **kwargs):
            print(self, args, kwargs)
    
    obj = Foo('nick', 18)  # 实例化对象时触发__init__
    
    from init
    
    obj(1,2,3,a=1,b=2)  # 对象加括号调用时触发__call__
    
    <__main__.Foo object at 0x00000265C74DA0F0> (1, 2, 3) {'a': 1, 'b': 2}
    

    __str__

    • 在打印对象的时候触发,必须要返回一个字符串
    class Foo:
        def __init__(self):
            print('from init')
        
        def __str__(self):
            return 'from str' # 以字符串类型返回值传给打印,
        
    obj = Foo()
    
    from init
    
    print(obj)
    
    from str
    

    __del__

    • 在删除对象的时候触发
    class Foo:
        def __init__(self):
            print('from init')
            
        def __del__(self):
            print('from del')
            
    obj = Foo()
    
    from init
    
    del obj
    
    from del
    
  • 相关阅读:
    问题总结
    Https网络安全架构设计
    分布式ID生成策略
    [转]匿名内部类详解
    JAVA名词解释
    MQ实战
    手写SpringMVC实现
    多线程问答
    BIO、NIO实战
    spring中@Value("${key}")值原样输出${key}分析与解决
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11067354.html
Copyright © 2011-2022 走看看