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 方法就是在 有原材料的基础上,加工,初始化商品环节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值