Pthon魔术方法(Magic Methods)-实例化
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.实例化一个对象
__new__:
该方法需要返回一个值,如果该值不是cls的实例,则不会调用"__init__"。该方法永远都是静态方法。
二.案例展示
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 class Person: 7 def __new__(cls, *args, **kwargs): 8 print(cls) 9 print(args) 10 print(kwargs) 11 # return super().__new__(cls) 12 return 2019 13 14 def __init__(self,name): 15 self.name = name 16 17 print("{0} 我是分割线 {0}".format("*" * 20)) 18 p1 = Person("Jason Yin") 19 20 print("{0} 我是分割线 {0}".format("*" * 20)) 21 print(p1) 22 23 24 25 #以上代码执行结果如下: 26 ******************** 我是分割线 ******************** 27 <class '__main__.Person'> 28 ('Jason Yin',) 29 {} 30 ******************** 我是分割线 ******************** 31 2019
三.总结
__new__方法很少使用,即使创建了该方法,也会使用return super().__new__(cls)基类object的__new__方法来创建实例并返回。