python面向对象---- item系列

具体用法:

class Foo:
    def __getitem__(self, item):
        print(‘=====>get‘)
        return self.__dict__[item]

    def __setitem__(self, key, value):
        print(‘====set‘)
        self.__dict__[key]=value #等同于setattr(self,key,value)

    def __delitem__(self, key):
        print(‘====del‘)
        self.__dict__.pop(key)

f=Foo()

f[‘x‘]=123123123123  #这种访问方式能对应到类中的__setitem__方法。

# del f[‘x‘]  #这种方式能对应到类中的__delitem__方法。

print(f[‘x‘])
#这种方式访问能对应到类中的__getitem__的方法。
时间: 2024-10-20 01:23:31

python面向对象---- item系列的相关文章

python面向对象部分简单整理

面向对象 VS 面向过程面向过程 面向过程的程序设计的核心是过程(流水线式思维) 优点: 极大的降低了写程序的复杂度 缺点: 一整个过程(流水线)只能解决一个问题,若问题更改,代码几乎要全部重写. 应用场景: 一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 更加适合瀑布流式的产品开发环境中 面向对象 面向对象的程序设计的核心是对象(上帝式思维) 优点是: 解决了程序的扩展性 缺点: 可控性差,无法像面向过程那样及其精准的处理某一问题

Python - - 面向对象 - - 面向对象进阶

目录 isinstance和issubclass 反射 setattr delattr getattr hasattr __str__和repr del item系列 - getitem - setitem - delitem new call len hash eq 1 isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class A:pass a = A() print(isinstance(a, A)) # 结果呈现

Python面向对象之反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) class Foo:    f = '

Python面向对象反射,双下方法

一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 对实例化对象的示例 class Foo

python 面向对象 进阶篇

在上篇<python面向对象>中,简单介绍了python中面向对象的基本知识 在这篇博客中,详细介绍python类的成员,成员修饰符,类的特殊成员. 类的成员 类的成员分为三种:字段,方法和属性 所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份. 字段 字段包括普通字段和静态字段.静态字段,保存在类中.普通字段,保存在对象中. class FOO: country = “中国

Python面向对象(5)

Python面向对象里面有很多特殊方法,例如__init__(构造方法),__del__(析构方法),这些方法对于面向对象编程非常重要,下面列出一些常用的特殊方法 (1)__call__ class Foo: def __init__(self): self.name = 'name' def __call__(self, *args, **kwargs): print('call') return 1 r = Foo() a=r()#实例后面加括号,执行类里面的__call__方法,也可以Fo

Python爬虫Csdn系列III

Python爬虫Csdn系列III By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 说明: 在上一篇博客中,我们已经能够获取一个用户所有文章的链接了,那么这一节自然就是要将这些博客下载下来咯. 分析: 有了链接下载文章自然是不难.但是,获取的数据该怎么处理?每一篇文章都带有格式换行这些信息,自然,我们存储它们也是要存储其对应的html格式的数据的(注意,我们编辑的带有格式的博客或者其他文本都是以html代码格式存储的).如何存?使用数据库

Python 面向对象的补充

isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 6 isinstance(obj, Foo) issubclass(sub, super)检查sub类是否是 super 类的派生类 1 class Foo(object): 2 pass 3 4 class Bar(Foo): 5 pass 6

Python爬虫Csdn系列II

Python爬虫Csdn系列II By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 说明: 在上一篇文章中,我们已经知道了只要将程序伪装成浏览器就能访问csdn网页.在这篇文章中,我们将设法获取某个csdn用户的所有文章的链接. 分析: 打开一个某一个的csdn用户的的专栏,可以选择目录视图(如:http://blog.csdn.net/whiterbear?viewmode=contents)和摘要视图(比如:http://blog.cs