美文网首页
day 27 总结

day 27 总结

作者: 两分与桥 | 来源:发表于2018-04-18 17:30 被阅读2次

零零散散的总结

#自省
hasattr(obj,'属性') #obj.属性 是否存在
getattr(obj,'属性') #获取obj.属性 不存在则报错
getattr(obj,'属性','默认值') #获取obj.属性 不存在不会报错, 返回默认值
setattr(obj,'属性','属性的值') #obj.属性 = 属性的值
delattr(obj,'属性') #del obj.属性


# __getattr__,__setattr__,__delattr__
obj.属性 的方式去操作属性时触发的方法

__getattr__: obj.属性 不存在时触发
__setattr__: obj.属性=属性的值 时触发
__delattr__: del obj.属性 时触发


 __getitem__,__setitem__,__delitem__ 
obj['属性'] 的方式去操作属性时触发的方法

__getattr__: obj.['属性]' 时触发
__setattr__: obj['属性']=属性的值 时触发
__delattr__: del obj['属性'] 时触发

#__get__,__set__,__del__
描述就是一个新式类,这个类至少要实现上述三个方法中的一个
class 描述符:
    def __get__(self, instance, owner):
        pass
    def __set__(self, instance, value):
        pass
    def __delete__(self, instance):
        pass
class 类:
    name = 描述符()
    
obj = 类
obj.name  #-->触发get
obj.name = 'test' #-->触发set
del obj.name #-->触发del

#__del__ :析构方法
垃圾回收时触发

print 调用的就是str方法

相关文章

网友评论

      本文标题:day 27 总结

      本文链接:https://www.haomeiwen.com/subject/tuhbkftx.html