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()
迭代器返回下一个值
DAY15+16.魔法方法
最新推荐文章于 2024-06-05 07:45:00 发布