STUNUM

面有萌色,胸有丘壑。心有猛虎,细嗅蔷薇。

嗨,我是王鑫 (@stunum),一名 Python 开发者。


Python web开发,后端以Django框架为主,前端使用Vue.js...

python中__init__()、 __call__()、 __new__()、 __del__()方法的作用

根据python的对象从创建到销毁的顺序讲 __new__() -> __init__() -> __call__() -> __del__()

class Person(object):
    def __new__(cls,[,*args [,**kwargs]]):
        return super().__new__(cls,[,*args [,**kwargs]])

    def __init__(self,[,*args [,**kwargs]]):
        ...

    def __call__(self,[,*args [,**kwargs]]):
        ...

    def __del__(self,[,*args [,**kwargs]]):
        ...

  • __new__() 方法: 负责对象的创建,是一个静态方法,第一个参数是cls
    1. 实例化对象时,一定被调用。
    2. 如果 __new__() 方法不返回值(或者说返回 None)那么 __init__() 将不会得到调用
  • __init__() 方法: 初始化对象内属性的方法,只有在对象创建完毕需要初始化属性时调用。__init__()方法 只能返回 None 值

  • __call__() 方法: 首先只有对象才是可以call的,当生成的对象被像函数一样调用时就会触发。

  • __del__() 方法: 在对象的生命周期结束时即该对象的所有引用都被删除之后, __del__() 会被调用,可以将 __del__() 理解为”析构函数”
最近的文章

pyton标准库装饰器——property

Python内置的 @property 装饰器就是负责把一个方法变成属性调用的。举个例子:传统的类的属性读写方式如下class Student(object): def __init__(self,num): self._score=num def get_score(self): return self._score def set_score(self,num): self._score=num>>>...…

水滴石穿继续阅读
更早的文章

关闭MacOS下迅雷不必要的功能

关闭MacOS下迅雷不必要的功能 众所周知下载届的两大毒瘤:百度网盘和迅雷下载。但是两者相比还是百度网盘更不要脸一点!迅雷下载启动之后的全部多余的功能都来自于/Applications/Thunder.app/Contents/PlugIns/该文件夹下的插件,所以只要针对这个文件夹操作就能关闭迅雷不必要的功能!首先想到的就是暴力方法:直接删除文件夹下的全部文件考虑到怕迅雷后期会做软件完整性校验啥的导致无法使用,所以直接删除PlugIns文件夹下的内容不是最好的办法!思来想去,突然想到,...…

奇技淫巧继续阅读