python高级编程之魔术方法

    科技2025-12-21  9

    https://blog.csdn.net/weixin_45912307/article/details/108965633

    python高级编程之魔术方法

    魔术方法1. `__init__(self)` 初始化魔术方法2.`__new__`实例化魔术方法3.`__call__`对象调用方法4. `__del__`析构函数方法5. `__str__(self)`6. 魔术方法总结

    魔术方法

    魔术方法: __名字__()

    1. __init__(self) 初始化魔术方法

    触发时机: 初始化对象时触发(不是实例化触发,但是实例化在一个操作中)

    def 类名(): def __init__(self): self.属性名=属性值 def call(self): print(self.属性名) 对象名 = 类名() 对象名.call()

    2.__new__实例化魔术方法

    向内存申请地址空间再将地址retrun给__init__ 触发时机: 在实例化时触发

    def 类名(): def __init__(self,属性名): self.属性名=属性名 [属性名 = 属性值] def __new__(cls,*args,**kwargs): return object.__new__(cls) 对象名 = 类名(属性值)

    3.__call__对象调用方法

    触发时机: 将对象当成函数使用的时候,会默认调用此函数中内容

    def __call__(self,属性名): print('{}'.format(属性名)) 对象名(属性值)

    4. __del__析构函数方法

    def __del__(self): pass 对象赋值 p = Person() p1 = p # 说明:p和p1共同指向同一个地址

    删除地址的引用 del p1删除p1对地址的引用

    查看对地址的引用次数:

    import sys sys.getrefcount(p) 当一块空间没有了任何引用,默认执行__del__ ref = 0

    5. __str__(self)

    触发时机: 打印对象名,自动触发去调用__str__里面的内容 注意: 一定要在__str__方法中添加return,return后面内容就是打印对象看到的内容

    6. 魔术方法总结

    重点掌握: __str__ 打印对象名,自动触发去调用__str__里面的内容 __init__(self,参数名) 初始化方法,通过类创建对象时,自动触发执行 __new__() 开辟空间 了解: __del__() 没有指针引用的时候会调用,99%不需要重写 __call__() 想不想将对象当成函数用 __doc__ 类的描述信息 __module__ 表示当前操作的对象在哪个模块 __class__ 表示当前操作的对象的类是什么 __del__ 当对象在内存中被释放时,自动触发执行 __dict__ 类或对象中的所有属性

    Processed: 0.014, SQL: 9