DAY15+16.魔法方法

No.11魔法方法
魔法方法总是被双下划线包围,如_init_。在适当时候被自动调用。
一、构造与析构
1、init(self[,…])
2、new(cls[,…])
一般是返回类的对象,也可以返回别的对象
e.g.>>>class CapStr(str):
def new(cls,string):
string=string.upper()
return str.new(cls,string)
>>>a=CapStr(“Sybil is beautiful”)
>>>a
‘SYBIL IS BEAUTIFUL’
3、del(self)
当对象要被销毁时,会自动调用。相当于垃圾回收机制。
e.g.>>>class C:
def init(self):
print(“我是_init_方法,我被调用了”)
def del(self):
print(“我是_del_方法,我被调用了”)
>>>c1=C()
我是_init_方法,我被调用了
>>>c2=c1
>>>c3=c2
>>>del c3
无反应
>>>del c2
无反应
>>>del c1
我是_del_方法,我被调用了
二、算术运算
在这里插入图片描述e.g.>>>class New_int(int):
def add(self,other):
return int.sub(self,other)
def sub(self,other)
return int.add(self,other)
>>>a=New_int(3)
>>>b=New_int(5)
>>>a+b
-2
>>>a-b
8
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、简单定制
time.localtime([secs])
返回结构:
在这里插入图片描述
四、属性访问
1、getattr(self,name)
定义当用户试图获取一个不存在的属性时的行为
2、getattribute(self,name)
定义当该类的属性被访问时的行为
3、setattr(self,name,value)
定义当一个属性被设置时的行为
4、delattr(self,name)
定义当一个属性被删除时的行为
五、描述符
将某种特殊类型的类的实例指派给另一个类的属性。
特殊类型:
1、get(self,instance,owner)
用于访问属性,它返回属性的值
2、set(self,instance,value)
将在属性分配操作中调用,不返回任何内容
3、delete(self,instance)
控制删除操作,不返回任何内容
六、定制序列
在这里插入图片描述
七、迭代
1、iter()
对一个容器对象用该函数得到它 的迭代器
2、next()
迭代器返回下一个值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值