python第六天(普通方法、类方法、静态方法、__init__、__new__)

举例代码:

class A:
def init(self):
print(self)
print(“这是构造方法”)
def new(cls, *args, **kwargs):
print(id(cls))
print(“这是new 方法,相当于__init__只是最后的那盘菜,而__new__才是得到食材”)
ret = object.new(cls)
print(ret)
return ret
@classmethod
def FA(cls):
print(“这是类方法,默认是类对象调用方法,参数最好使用默认的cls”)
@staticmethod
def FB(lalala):
print(“这是静态方法,不像普通方法,默认对象调用,(默认self作为函数参数00),这个方法得自己写”)
print(id(A))
print(A())
print("#"*60)
A.FA()
a = A()
#A.FB() a.FB() #报错,静态方法,不像普通方法,默认对象调用
A.FB(“aaaaa”)

运行结果:

2193562339896
2193562339896
这是new 方法,相当于__init__只是最后的那盘菜,而__new__才是得到食材
<main.A object at 0x000001FEBC74D5C0>
<main.A object at 0x000001FEBC74D5C0>
这是构造方法
<main.A object at 0x000001FEBC74D5C0>
############################################################
这是类方法,默认是类对象调用方法,参数最好使用默认的cls
2193562339896
这是new 方法,相当于__init__只是最后的那盘菜,而__new__才是得到食材
<main.A object at 0x000001FEBC74D5C0>
<main.A object at 0x000001FEBC74D5C0>
这是构造方法
这是静态方法,不像普通方法,默认对象调用,(默认self作为函数参数00),这个方法得自己写

Process finished with exit code 0

总结:

0、静态方法,不像普通方法,默认对象调用,(默认self作为函数参数00),这个方法调用参数得自己写
1、 new 至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动 提供
2、 new 必须要有返回值,返回实例化出来的实例,这点在自己实现 new 时要特别注 意,可以return父类 new 出来的实例,或者直接是object的 new 出来的实例
3、 init 有一个参数self,就是这个 new 返回的实例, initnew 的基础上 可以完成一些其它初始化的动作, init 不需要返回值
我们可以将类比作制造商, new 方法就是前期的原材料购买环节, init 方法就是在 有原材料的基础上,加工,初始化商品环节

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章