这篇文章主要介绍Python类方法,__new__方法和__init__方法分别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
在编程语言中创建一个类,有构造方法这样的一个术语。而在Python中,通常大家都认为__init__是构造方法,其实并不完全等同。在构建类中,有一个特殊的方法__new__,这个才能等同为构造方法。
__new__是一个类方法,我们在定义一个类方法时需要在函数前打上@classmethod装饰器,而__new__不需要,因为它经过特殊处理。为了理解__new__方法,我们先来看看类方法是什么。
<强>类方法强>
class MyClass: ,,@classmethod ,,,def 测试(cls): ,,,,,,,印刷(cls.__name__) ,,,,,,, MyClass.test () #输出,MyClass
在MyClass类中,测试方法就是类方法,它传入第一个参数为cls,其实就是MyClass类,打印cls。__name__可以看到结果。类方法可以直接类名。方法名()调用。通常类方法是备选构造方法。
<强>类方法的应用强>
在祝辞祝辞,得到datetime import datetime 在祝辞祝辞,datetime.fromtimestamp (324234) datetime.datetime (1970,, 1,,,, 2,, 3,, 54)
如上所示,内置的datetime包中的fromtimestamp就是类方法,可以从多种方式构造出datetime对象。
<强> __new__方法强>
def __new__ (cls,,): ,,,return 超级(). __new__ (cls)
__new__是类方法,所以第一个参数也是cls,剩下的参数就是构造方法里需要的参数了。通常__new__都不需要定义,在元类编程中才需要,它可以控制类的生成过程。
__new__必须返回一个实例(实例),传入到__init__方法中自我的参数,也就是实例变量。这里返回父类(对象)的__new__方法用来创建一个新的实例。相当于
obj =, object.__new__ (MyClass) 时间=obj MyClass () # obj是实例,上面两个方式等同
其中,MyClass是类,obj是实例(实例)
<强> __init__方法强>
__new__是构造方法,那么__init__就是初始化函数,它负责将变量绑定到实例中,更新实例的__dict__字典。其中第一个参数自我就是__new__的返回值,是类的实例. __new__方法先于__init__方法执行。
def __init__ (,,): ,,,self.a =,一个
<强>结合使用强>
class MyClass: ,,,def __new__ (cls,,): ,,,,,,,return 超级(). __new__ (cls) ,,,def __init__ (,,): ,,,,,,,self.a =, 时间=obj MyClass (3) 打印(obj.a)
<强>要点强>
1. __new__是构造方法,__init__是初始化函数。
2. __new__通常不需要手动定义,一般在元类编程中使用,控制类的生成过程。
3. __new__第一个被执行,然后执行__init__绑定实例变量。
4。__new__必须有返回值,返回值是该类的实例,它会被__init__函数接收,通常叫做自我变量。
以上是Python类方法,__new__方法和__init__方法分别是什么的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!