# 对象作为len()函数的参数是必须实现该方法 __len__ # 使用类似字典方式访问成员时必须实现 dic['pro_name'] __getitem__ # 使用类似字典方式设置成员时必须实现 dic['pro_name']='asdf' __setitem__ # 使用类似字典方式删除成员时必须实现 delete dic['pro_name'] __delitem__ class DictDemo: def __init__(self,key,value): self.dict = {…
可变集合需要实现: __len__  __getitem__    __setitem__  __delitem__不可变集合需要实现: __len__  __getitem__ __len__:返回集合长度 __getitem__(self, item) 使用索引访问元素 __setitem__(self, key, value) 对索引赋值,使用 self[key] = value . __delitem__(self, key) 删除索引值 del self[key]    __conta…
h2 { color: #fff; background-color: #7CCD7C; padding: 3px; margin: 10px 0px } h3 { color: #fff; background-color: #008eb7; padding: 3px; margin: 10px 0px } python的魔法方法: 在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法__getitem__.__setitem__.__delitem__.__len_…
3.1 什么是魔法函数 类里面,实现某些特性的内置函数,类似 def __xx__(): 的形式. 不要自己定义XX,并不是和某个类挂钩的 class Company(object): def __init__(self, employee_list): self.employee = employee_list # 可迭代 def __getitem__(self, item): return self.employee[item] # 长度,实现了len函数 def __len__(self…
#__getitem__ __setitem__ __delitem__运行设置key value值了class fun: def __init__(self): print('test') def run(self): print('run') def __getitem__(self, item): print('__getitem__','item:',item) def __setitem__(self, key, value): print('__setitem__','key:',k…
1.__init__(): 所有类的超类object,有一个默认包含pass的__init__()实现,这个函数会在对象初始化的时候调用,我们可以选择实现,也可以选择不实现,一般建议是实现的,不实现对象属性就不会被初始化,虽然我们仍然可以对其进行赋值,但是它已经成了隐式的了,编程时显示远比隐式的更好,看下面的小栗子: 我们可以通过vars函数获知显示声明的属性,但是隐式的就无法获知了,这并不值得提倡,但是在知道参数的情况下我们还是可以对其进行赋值的,如下: 不论怎么样,显示的初始化属性是一个好习…
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 可切片的对象 """ import numbers class sliceObject: def __init__(self, students): self.students = students def __reversed__(self): pass def __getitem__(self, item): """…
  #!/usr/bin/env python # -*- coding: utf-8 -*- import sys __metaclass__ = type """ __getattr__ 和 __getattribute__ 的区别 """ class ClassName: def __init__(self, name, info={}): self.name = name self.info = info # def __getattri…
==,is的使用 ·is是比较两个引用是否指向了同一个对象(引用比较). ·==是比较两个对象是否相等 1.__ init__(): 所有类的超类object,有一个默认包含pass的__ init __()实现,这个函数会在对象初始化的时候调用,我们可以选择实现,也可以选择不实现,一般建议是实现的,不实现对象属性就不会被初始化,虽然我们仍然可以对其进行赋值,但是它已经成了隐式的了,编程时显示远比隐式的更好,看下面的小栗子:   image 我们可以通过vars函数获知显示声明的属性,但是隐式的…
__getitem__.__setitem__.__delitem__ 总结: __getitem__,__setitem_,__delitem__ : obj[‘属性’]的方式去操作属性时触发的方法__getitem__:obj['属性'] 时触发__setitem__:obj['属性']=属性的值 时触发__delitem__:del obj['属性'] 时触发 赋值的底层原理都一样 f1.name = 'zhaok' #做的就是往属性字典里添加或覆盖值,原理:--->setattr----…