Python类的特性方法
来源:互联网 发布:中车株洲电力机车知乎 编辑:程序博客网 时间:2024/05/16 02:49
专用方法产生的原因:它们提供了一种,可以将非调语法映射到方调用上。
以下内容转自JavaEye / 作者:wangtong40
================================
Python 类可以定义的专用方法。专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样)。
6.5.1 __init__
类似于构造函数。
6.5.2 __del__
类似于析构函数
6.5.3 __repr__
使用repr(obj)的时候,会自动调用__repr__函数,该函数返回和eval()兼容的对象字符串表达式,用于重建对象,如果eval(repr(obj))会得到一个对象的拷贝。
- class A:
- def __repr__(self):
- return 'A()'
- x = A()
- print repr(x)
- b = eval(repr(x)) # 拷贝对象a
- print b
- class A:
- def __repr__(self):
- return 'A()'
- x = A()
- print repr(x)
- b = eval(repr(x)) # 拷贝对象a
- print b
class A: def __repr__(self): return 'A()' x = A()print repr(x)b = eval(repr(x)) # 拷贝对象aprint b
6.5.4 __str__
返回一个字符串用于描述字符串本身。
6.5.5 __cmp __
比较运算符,0:等于 1:大于 -1:小于
- class Dog:
- def __cmp__(self, other):
- if other > 0 :
- return 1
- elif other < 0:
- return - 1
- else:
- return 0
- dog = Dog()
- if dog > -10:print 'ok'
- if dog < -10:print 'ok'
- if dog == 0:print 'ok'
- class Dog:
- def __cmp__(self, other):
- if other > 0 :
- return 1
- elif other < 0:
- return - 1
- else:
- return 0
- dog = Dog()
- if dog > -10:print 'ok'
- if dog < -10:print 'ok'
- if dog == 0:print 'ok'
class Dog: def __cmp__(self, other): if other > 0 : return 1 elif other < 0: return - 1 else: return 0dog = Dog()if dog > -10:print 'ok'if dog < -10:print 'ok'if dog == 0:print 'ok'
- class Zoo:
- def __getitem__(self, key):
- if key == 'dog':return 'dog'
- elif key == 'pig':return 'pig'
- elif key == 'wolf':return 'wolf'
- else:return 'unknown'
- zoo = Zoo()
- print zoo['dog']
- print zoo['pig']
- print zoo['wolf']
- class Zoo:
- def __getitem__(self, key):
- if key == 'dog':return 'dog'
- elif key == 'pig':return 'pig'
- elif key == 'wolf':return 'wolf'
- else:return 'unknown'
- zoo = Zoo()
- print zoo['dog']
- print zoo['pig']
- print zoo['wolf']
class Zoo: def __getitem__(self, key): if key == 'dog':return 'dog' elif key == 'pig':return 'pig' elif key == 'wolf':return 'wolf' else:return 'unknown'zoo = Zoo()print zoo['dog']print zoo['pig']print zoo['wolf']
输出结果:ok ok
6.5.6 __getitem__
__getitem__ 专用方法很简单。象普通的方法 clear,keys 和 values 一样,它只是重定向到字典,返回字典的值。
输出结果:dog pig wolf
6.5.7 __setitem__
- __setitem__ 简单地重定向到真正的字典 self.data ,让它来进行工作。
- class Zoo:
- def __setitem__(self, key, value):
- print 'key=%s,value=%s' % (key, value)
- zoo = Zoo()
- zoo['a'] = 'a'
- zoo['b'] = 'b'
- zoo['c'] = 'c'
- __setitem__ 简单地重定向到真正的字典 self.data ,让它来进行工作。
- class Zoo:
- def __setitem__(self, key, value):
- print 'key=%s,value=%s' % (key, value)
- zoo = Zoo()
- zoo['a'] = 'a'
- zoo['b'] = 'b'
- zoo['c'] = 'c'
__setitem__ 简单地重定向到真正的字典 self.data ,让它来进行工作。class Zoo: def __setitem__(self, key, value): print 'key=%s,value=%s' % (key, value)zoo = Zoo()zoo['a'] = 'a'zoo['b'] = 'b'zoo['c'] = 'c'
输出结果:dog pig wolf
key=a,value=a
key=b,value=b
key=c,value=c
6.5.8 __delitem__
- class A:
- def __delitem__(self, key):
- print 'delete item:%s' % key
- a = A()
- del a['key']
- Python类的特性方法
- Python类的特性方法
- 让python类的方法或特性变成私有
- Python类的方法或特性变为“私有”方式
- Python--类的高级特性
- python特性(八):生成器对象的send方法
- Python中字段(属性)、方法、特性的区别
- Python特性(九):生成器对象的throw方法
- Python特性(十一):生成器对象的close方法
- python特性(十三):context manager的__enter__方法
- Python特性(十四):context manager的__exit__方法
- Python类继承的高级特性
- Python类继承的高级特性
- Python 类的魔力特性之一:property
- Python的一些特性
- python的特性
- Python的高级特性
- python 的一些特性
- SQL的基本语法
- Fedora或者Centos常见删除安装命令
- 2012年12月第二个周末
- 如何阅读Java源码 阅读java的真实体会
- 近段时间工作汇总
- Python类的特性方法
- python学习之三
- C#开发实战1200例(第Ⅰ卷)(奋斗的小鸟)_PDF电子书
- sql基本语法
- 央视《家有妙招》整理版,共250招,值得收藏
- OpenWRT配置及应用
- Oracle group by及其若干相关函数的一些说明
- Android开发12——Andorid中操作数据库的insert的两种方法以及nullColumnHack
- 对愚公移山的反思