python语法__call__有趣内置函数
2014-03-18 07:16
295 查看
Python中有一个有趣的语法__call__
Python中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。
换句话说,我们可以把这个类的对象当作函数来使用,相当于重载了括号运算符。
为了弄明白python中__setattr__, __getattr__, __delattr__, __call__的作用,重写dict,扩展其功能
Code:
class storage(dict):
#通过使用__setattr__, __getattr__, __delattr__
#可以重写dict,使之通过“.”调用
def __setattr__(self, key, value):
self[key] = value
def __getattr__ (self, key):
try:
return self[key]
except KeyError, k:
return None
def __delattr__ (self, key):
try:
del self[key]
except KeyError, k:
return None
# __call__方法用于实例自身的调用
#达到()调用的效果
def __call__ (self, key):
try:
return self[key]
except KeyError, k:
return None
s = storage()
s.name = "hello"#这是__setattr__起的作用
print s("name")#这是__call__起的作用
print s["name"]#dict默认行为
print s.name#这是__getattr__起的作用
del s.name#这是__delattr__起的作用
print s("name")
print s["name"]
print s.name
Python中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。
换句话说,我们可以把这个类的对象当作函数来使用,相当于重载了括号运算符。
为了弄明白python中__setattr__, __getattr__, __delattr__, __call__的作用,重写dict,扩展其功能
Code:
class storage(dict):
#通过使用__setattr__, __getattr__, __delattr__
#可以重写dict,使之通过“.”调用
def __setattr__(self, key, value):
self[key] = value
def __getattr__ (self, key):
try:
return self[key]
except KeyError, k:
return None
def __delattr__ (self, key):
try:
del self[key]
except KeyError, k:
return None
# __call__方法用于实例自身的调用
#达到()调用的效果
def __call__ (self, key):
try:
return self[key]
except KeyError, k:
return None
s = storage()
s.name = "hello"#这是__setattr__起的作用
print s("name")#这是__call__起的作用
print s["name"]#dict默认行为
print s.name#这是__getattr__起的作用
del s.name#这是__delattr__起的作用
print s("name")
print s["name"]
print s.name
相关文章推荐
- 002_030 Python CRC 64位循环冗余码校验
- 002_029 Python 带版本号的文件名,给文件加上类00i的版本号
- Python 2.7 is required, which was not found in the registry
- Python执行代码的实际操作的五个步骤详细介绍
- Python的执行原理
- 从Hello World 谈Python运行原理
- python mysql多条插入
- 002_028 Python 使用跨平台的文件锁
- python正则捕获日志解析实例
- Python正则表达式指南
- 002_027 Python 从微软Word文档中抽取文本
- 【机器学习系列】SVD奇异值分解(python代码)
- 002_026 Python 从OpenOffice.org的文档中提取文本
- 关于python文件操作
- 002_025 Python 修改Windows上一系列文件的属性,如设置文件为只读、归档等
- 最坏线性时间的python实现 。
- Python中读写文件操作
- Python玩具总动员之爬虫篇(一):玩玩urllib,做个下载器吧
- Python中FTP的使用
- Python中Mail的使用