__getitem__ __setitem__ __delitem__ 使用】的更多相关文章

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_…
可变集合需要实现: __len__  __getitem__    __setitem__  __delitem__不可变集合需要实现: __len__  __getitem__ __len__:返回集合长度 __getitem__(self, item) 使用索引访问元素 __setitem__(self, key, value) 对索引赋值,使用 self[key] = value . __delitem__(self, key) 删除索引值 del self[key]    __conta…
#__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…
__getitem__.__setitem__.__delitem__ 总结: __getitem__,__setitem_,__delitem__ : obj[‘属性’]的方式去操作属性时触发的方法__getitem__:obj['属性'] 时触发__setitem__:obj['属性']=属性的值 时触发__delitem__:del obj['属性'] 时触发 赋值的底层原理都一样 f1.name = 'zhaok' #做的就是往属性字典里添加或覆盖值,原理:--->setattr----…
# 对象作为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 = {…
class Foo: def __getitem__(self, item): print('=====>get') return self.__dict__[item] def __setitem__(self, key, value): self.__dict__[key] = value # setattr(self,key,value) def __delitem__(self, key): self.__dict__.pop(key) f = Foo() f.x = 1 print(f…
__setitem__和__getitem__和__delitem__ class Foo: def __init__(self, name): self.name = name def __getitem__(self, item): print('getitem执行', self.__dict__[item]) def __setitem__(self, key, value): print('setitem执行') self.__dict__[key] = value def __deli…
主要讲类的内部方法 __setattr__  __getattr_  __delattr__  hasattr  __getattribute__  __getitem__(),__setitem__(), __delitem__() 主程序如下: class Foo: def _inif(self,pname): self.pname = pname def func(): print('i'm func') def __getattr__(self, item): print('提示:属性[…
转载:http://blog.csdn.net/xhw88398569/article/details/48690163 __xxxitem__:使用 [''] 的方式操作属性时被调用 __setitem__:每当属性被赋值的时候都会调用该方法,因此不能再该方法内赋值 self.name = value 会死循环 __getitem__:当访问不存在的属性时会调用该方法 __delitem__:当删除属性时调用该方法 class A(object): def __init__(self): se…
isinstance(obj,cls)检查是否obj是否是类 cls 的对象 issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo: def __init__(self,x): self.x = x class SubFoo(Foo): def __init__(self): pass f1 = Foo(2) print(isinstance(f1,Foo)) # True print(issubclass(SubFoo,Foo)) # Tr…
class MyDictionary(object): """docstring for MyDictionary""" kv = {} def __init__(self): super(MyDictionary, self).__init__() def __getitem__(self, key): return self.kv[key] def __setitem__(self, key, value): self.kv[key] = v…
1. getattr.setattr.hasattr getattr比较常用,与setattr和hasattr一起出现,他们也是最容易理解的,下面是他的用法: class Profile(): name="xiaoxin" def sex(self): return "male"p=Profile() hasattr(p, "name") # 判断属性是否存在 >>> True hasattr(p, "age"…
repr方法() 双下方法__str__: 打印对象就相当于打印对象.__str__ __repr__(): __repr__是__str__的备胎,没有__str__的时候,就调用__repr__:(但__str__不是__repr__的备胎) 小结: #内置的方法有很多 不一定全都在object中: 比如int 时间是没有办法计算长度的,只有兼容性的方法才会被收录到object中 len方法计算学生数量: 析构函数__del__方法: 在删除一个对象之前进行一些收尾工作: __call__方…
很多pythonic的代码都会用到内置方法,根据自己的经验,罗列一下自己知道的内置方法. __getitem__ __setitem__ __delitem__ 这三个方法是字典类的内置方法,分别对应于查找.设置.删除操作,以一个简单的例子说明: class A(dict): def __getitem__(self, key): print '__getitem__' return super(A, self).__getitem__(key) def __setitem__(self, ke…
python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(public),私有成员(private)和保护成员(protected).并且python中没有关键字去修饰成员,默认python中所有的成员都是公有成员,但是私有成员是以两个下划线开头的名字标示私有成员,私有成员不允许直接访问,只能通过内部方法去访问,私有成员也不允许被继承. class a: #…
参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/articles/4963027.html 一.常用函数说明: ★ lamba python lambda是在python中使用lambda来创建匿名函数,而用def创建的方法是有名称的,除了从表面上的方法名不一样外,python lambda还有哪些和def不一样呢? 1 python lambd…
collections collections是Python数据类型的补充,可以实现Counter计数.可命名元组(namedtuple).默认字典.有序字典.双向队列等功能 参考:http://python.usyiyi.cn/python_278/library/collections.html Help on module collections: NAME collections FILE c:\python27\lib\collections.py CLASSES __builtin_…
上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 注意点: self ,我们讲过了,self = 对象,实例化后的对象调用类的各种成员的时候的self就是这个对象. 而且我们也讲过了…
webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶着重复的基本工作,从在学校时候就养成了追究原理的习惯,从而有了这篇session的使用和说明. PS:其实有些总结的东西挺好的,想分享给大家看,而不是枯燥的代码,这东西说实话对其他人用处不大,但都被移除首页了~~ webpy中的session 下面为官方的例子,用session来存储页面访问的次数,…
对象,价值观和类型 对象 Python的抽象的数据. 所有的数据在一个Python程序 表示对象或对象之间的关系. (在某种意义上,在 符合冯诺依曼模型的代码也“存储程序计算机” 由对象.) 每一个对象都有一个身份,一个类型和一个值. 一个对象的 身份 从来没有 改变一旦被创建,你可能认为这是对象的地址 内存. “ 是 “运营商比较两个对象的身份, id() 函数返回一个整数代表其身份(目前 实现为其地址). 一个对象的 类型 也是不变的. [1] 一个对象的类型决定了操作对象支持(如. :“…
元类的介绍 请看位于下面网址的一篇文章,写的相当好. http://blog.jobbole.com/21351/ 实例补充 class Meta(type): def __new__(meta, cls, parent, attr_dict): res = super(Meta, meta).__new__(meta,cls, parent, attr_dict) print('meta new stage, %s is %s, %s is %s' % (meta, type(meta), c…
这篇文章仅仅是总结性质的,待以后有时间的时候会针对比较难理解的部分补充一些例子. 构造和析构 __init__ __del__ 函数调用 __call__ 打印操作 __str__ __repr__ str(x), print(X):会先尝试__str__方法,然后尝试__repr__方法:repr(X)或交互模式下输入X,只会尝试__repr__方法. 属性操作 __getattr__:只有类中没有定义的属性点号运算才会尝试该方法 __setattr__:类中所有属性的赋值语句都会尝试该方法,…
python高级之面向对象高级   python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(public),私有成员(private)和保护成员(protected).并且python中没有关键字去修饰成员,默认python中所有的成员都是公有成员,但是私有成员是以两个下划线开头的名字标示私有成员,私有成员不允许直接访问,只能通过内部方法去访问,私有成员也不…
一.面向对象编程进阶 1.静态方法 @staticmethod 名义上归类管理,实际上跟类没什么关系 在静态方法里,访问不了类或实例中的任何属性 class Static_method(object): def __init__(self,name): #构造函数,初始化实例变量 self.name = name @staticmethod #静态方法调用 def eat(self,name): #归属于类管理,实际上跟类没什么关系 print("%s is eating"% name…
魔法方法,属性和迭代器 新式类 通过赋值语句__metaclass=true或者class NewStyle(object)继承内建类object,可以表明是新式类. 构造方法 对象被创建后,会立即调用的构造方法 class Foobar: def __init__(self,value=42): self.somevar=value fb=Foobar() print fb.somevar 42 重写 通过重写超类的方法,可以自定义继承的行为 class A(object): def __in…
# Copyright 2006 Joe Wreschnig## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License version 2 as# published by the Free Software Foundation.## $Id: _util.py 4218 2007-12-02 06:11…
pickle,load :切记:如果load的是个对象的话,必须导入构建这个对象的类     封装 类和对象的关系: 每个对象里都有一个类对象指针,指向类     继承:支持单继承和多继承 print('''继承顺序:ABCDEF 先左后右,深度优先,最后找祖宗 F / \ C E| |B D \ / A''')class F: def f3(self): print("F f3")class C(F): def f1(self): print("C f1")cla…
学了面向对象三大特性继承,多态,封装.今天我们看看面向对象的一些进阶内容,反射和一些类的内置函数. 一.isinstance和issubclass class Foo: pass class Son(Foo): pass s = Son() #判断一个对象是不是这个类的对象,传两个参数(对象,类) print(isinstance(s,Son)) print(isinstance(s,Foo)) #type更精准 print(type(s) is Son) print(type(s) is Fo…
1.staticmethod和classmethod staticmethod  静态方法: 让类里的方法,直接被类调用,就像正常的函数一样 宝宝,男 博博,女 海娇,男 海燕,女 海东,男 海峰,男 student.txt class Student: # f = open('student', encoding='utf-8') def __init__(self): pass @staticmethod def show_student_info(): f = open('student'…
前言 上节大话python面向对象对面向对象有了一些了解,这次就不用大话风格了 (ps:真心不好扯啊) isinstance与issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isinstance(obj, Foo) issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Fo…