python 专用方法
来源:互联网 发布:国信金太阳交易软件 编辑:程序博客网 时间:2024/06/06 02:26
高级专用类方法
除了 __getitem__ 和 __setitem__ 之外 Python 还有更多的专用函数。某些可以让你模拟出你甚至可能不知道的功能。
下面的例子将展示 UserDict 一些其他专用方法。
例 5.16. UserDict 中更多的专用方法
def __repr__(self): return repr(self.data) def __cmp__(self, dict): if isinstance(dict, UserDict): return cmp(self.data, dict.data) else: return cmp(self.data, dict) def __len__(self): return len(self.data) def __delitem__(self, key): del self.data[key]
在这个地方,你可能会想,“所有这些工作只是为了在类中做一些我可以对一个内置数据类型所做的操作”。不错,如果你能够从像字典一样的内置数据类型进行继承的话,事情就容易多了 (那样整个 UserDict 类将完全不需要了)。尽管你可以这样做,专用方法仍然是有用的,因为它们可以用于任何的类,而不只是像 UserDict 这样的封装类。
专用方法意味着任何类 可以像字典一样保存键-值对,只要定义 __setitem__ 方法。任何类可以表现得像一个序列,只要定义 __getitem__ 方法。任何定义了 __cmp__ 方法的类可以用 == 进行比较。并且如果你的类表现为拥有类似长度的东西,不要定义 GetLength 方法,而定义 __len__ 方法,并使用 len(instance)。
其它的面向对象语言仅让你定义一个对象的物理模型 (“这个对象有 GetLength 方法”),而 Python 的专用类方法像 __len__ 允许你定义一个对象的逻辑模型 (“这个对象有一个长度”)。Python 存在许多其它的专用方法。有一整套的专用方法,可以让类表现得象数值一样,允许你在类实例上进行加、减,以及执行其它算数操作。(关于这一点典型的例子就是表示复数的类,数值带有实数和虚数部分。) __call__ 方法让一个类表现得像一个函数,允许你直接调用一个类实例。并且存在其它的专用函数,允许类拥有只读或只写数据属性,在后面的章节中我们会更多地谈到这些。
进一步阅读
- Python Reference Manual 提供了所有专用类方法的文档。
python_专用类方法
周五了,快要休周末了。。。。。。
1.__getitem__专用方法
1 >>> map = {'name':'c小加'}
2 >>> map.__getitem__("name")
3 'c\xe5\xb0\x8f\xe5\x8a\xa0'
只是重定向到字典,返回字典的值
2.__setitem__专用方法
1 >>> map = {'name':'c小加'}
2 >>> map.__setitem__('monaker','队花')
3 >>> map
4 {'monaker': '\xe9\x98\x9f\xe8\x8a\xb1', 'name': 'c\xe5\xb0\x8f\xe5\x8a\xa0'}
map实际上是一个类,它尽可能的扮成一个字典,就像C 小加,尽可能的扮作队花,虽然他是个男的。
1 >>> map['monaker'] = '队花'
2 >>> map
3 {'monaker': '\xe9\x98\x9f\xe8\x8a\xb1', 'name': 'c\xe5\xb0\x8f\xe5\x8a\xa0'}
这个看上去像个正常的字典语法,这行代码实际上暗自调用了map.__setitem__('monaker','队花')
在类中覆盖__setitem__方法严格按照与父类方法相同的形式进行定义。参数的名字没关系,只是个数。同时直接调用父类的时候,尽管没有__setitem__.但是Python会沿着父类树走,知道找到我们正在调用方法的类。
3 .__repr__ 是一个专用的方法,在当调用 repr(instance) 时被调用。repr 函数是一个内置函数,它返回一个对象的字符串表示。它可以用在任何对象上,不仅仅是类的实例。你已经对 repr 相当熟悉了,尽管你不知道它。在交互式窗口中,当你只敲入一个变量名,接着按ENTER,Python 使用 repr 来显示变量的值。自已用一些数据来创建一个字典 d ,然后用 print repr(d) 来看一看吧。
4.__cmp__ 在比较类实例时被调用。通常,你可以通过使用 == 比较任意两个 Python 对象,不只是类实例。有一些规则,定义了何时内置数据类型被认为是相等的,例如,字典在有着全部相同的关键字和值时是相等的。对于类实例,你可以定义 __cmp__ 方法,自已编写比较逻辑,然后你可以使用 == 来比较你的类,Python 将会替你调用你的 __cmp__ 专用方法。
5.__len__ 在调用 len(instance) 时被调用。len 是一个内置函数,可以返回一个对象的长度。它可以用于任何被认为理应有长度的对象。字符串的 len 是它的字符个数;字典的 len 是它的关键字的个数;列表或序列的 len 是元素的个数。对于类实例,定义 __len__ 方法,接着自已编写长度的计算,然后调用 len(instance),Python 将替你调用你的 __len__ 专用方法。
6.__delitem__ 在调用 del instance[key] 时调用 ,你可能记得它作为从字典中删除单个元素的方法。当你在类实例中使用 del 时,Python 替你调用 __delitem__ 专用方法。
专用方法意味着任何类 可以像字典一样保存键-值对,只要定义 __setitem__ 方法。任何类可以表现得像一个序列,只要定义 __getitem__ 方法。任何定义了 __cmp__ 方法的类可以用 == 进行比较。并且如果你的类表现为拥有类似长度的东西,不要定义 GetLength 方法,而定义 __len__ 方法,并使用 len(instance)。
- Python的专用方法
- Python 专用类方法
- python 专用方法
- Python类的专用方法
- python中的专用类方法
- Python 高级专用类方法
- Python类的专用方法
- Python类的专用方法
- Python类的专用方法
- Python类的专用方法
- Python 专用方法和迭代机制
- Python类的专用方法:__init__ | __del__等
- python流言专用
- python快速学习帖!(入门专用)
- 入侵渗透专用的python小脚本
- Python基础-2 专用下划线标识符
- 数据库树结构 oracle的专用方法
- 保护眼睛的好方法(电脑专用)
- android关于版本更新问题
- Unity3D 使用 WWW 加载场景并显示进度条
- 如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!
- CPU与Cache、内存以及硬盘之间的数据交换
- PCH was compiled with module cache......解决办法
- python 专用方法
- POJ 1328 Radar Installation(贪心+区间选点问题)
- 嵌入式基础
- getaddrinfo ENOTFOUND https://api.weixin.qq.com https://api.weixin.qq.com:443
- loadrunner配置远程监控windows服务器系统资源
- linux:查看linux上启动的服务
- 创建文件夹
- 代理
- LDA算法入门