python学习之魔法方法的调用
2015-03-08 19:34
513 查看
在python中存在一些前面和后边都加上两个下划线的函数,这种函数会在一些特殊的情况下被调用,而不是根据他们的名字被调用。下面详细介绍几个重要的函数.
__init__函数,这类进行初始化的函数,在创建一个具体的对象的时候会自动的调用。
上述函数中在运行xiang=People()的时候会自动调用__init__()函数,而子类继承父类的__init__函数的时候使用的是Father.__init__(self)其中self表示子类自身。
class counterList(list):
def __init__(self,*args):
self.counter=0
list.__init__(self,*args)
def __getitem__(self,index): #it will be exceted dynamically when you use []
self.counter+=1
print "I am running"
return list.__getitem__(self,index)
count=counterList(range(0,10))
print count.counter
print count[0]+count[1]getitem()函数在使用[ ]时自动调用。
迭代器函数的使用:
class Fibs:
def __init__(self):
self.a=0
self.b=1
def next(self):
self.a,self.b=self.b,self.a+self.b
return self.a
def __iter__(self):
return self
fibs=Fibs()
for f in fibs:
if f>5:
print f
break使用其自带的迭代器必须实现next和__iter__函数。
此外python中还存在可以直接使用类名调用的函数静态函数和类变量函数
class MyClass:
@staticmethod #create static method
def smath():
print "this is static method"
@classmethod #create class method
def cmath(clf):
print "this is class method"
MyClass.smath()
MyClass.cmath()
__init__函数,这类进行初始化的函数,在创建一个具体的对象的时候会自动的调用。
class People: def __init__(self): self.university="shandong" def getUniversity(self): return self.university xiang=People() #when you create an object, the __init__ method will be excuted dynamically print xiang.getUniversity() class student(People): def __init__(self): People.__init__(self) name="xiang" gao=student() print gao.getUniversity()
上述函数中在运行xiang=People()的时候会自动调用__init__()函数,而子类继承父类的__init__函数的时候使用的是Father.__init__(self)其中self表示子类自身。
class counterList(list):
def __init__(self,*args):
self.counter=0
list.__init__(self,*args)
def __getitem__(self,index): #it will be exceted dynamically when you use []
self.counter+=1
print "I am running"
return list.__getitem__(self,index)
count=counterList(range(0,10))
print count.counter
print count[0]+count[1]getitem()函数在使用[ ]时自动调用。
迭代器函数的使用:
class Fibs:
def __init__(self):
self.a=0
self.b=1
def next(self):
self.a,self.b=self.b,self.a+self.b
return self.a
def __iter__(self):
return self
fibs=Fibs()
for f in fibs:
if f>5:
print f
break使用其自带的迭代器必须实现next和__iter__函数。
此外python中还存在可以直接使用类名调用的函数静态函数和类变量函数
class MyClass:
@staticmethod #create static method
def smath():
print "this is static method"
@classmethod #create class method
def cmath(clf):
print "this is class method"
MyClass.smath()
MyClass.cmath()
相关文章推荐
- Python学习笔记--子类调用父类方法
- python学习笔记之七:魔法方法,属性
- 继承父类,调用父类中的方法 分类: python 小练习 python基础学习 2014-01-10 17:54 325人阅读 评论(0) 收藏
- python 调用shell命令三种方法 分类: python基础学习 python Module 2014-01-13 14:13 239人阅读 评论(0) 收藏
- python基础教程_学习笔记11:魔法方法、属性和迭代器
- <<Python基础教程>>学习笔记 | 第09章 | 魔法方法、属性和迭代器
- Python学习之魔法方法、属性和迭代器
- SQL学习:mysql数据库备份和使用日志恢复+python调用mysql方法(4)
- Python基础教程 第9章: 魔法方法、属性和迭代器 学习笔记
- 零基础入门学习Python(21):魔法方法(1)构造和析构
- 零基础入门学习Python(24):魔法方法(4)描述符
- 零基础入门学习Python(25):魔法方法(5)定制序列和迭代器
- python学习笔记:子类怎样调用父类方法
- python cookbook第三版学习笔记十一:类和对象(二)调用父类的方法
- python学习七(类中魔法方法、应用)
- python学习——魔法方法详解
- 零基础学习python_魔法方法(41-48课)(迭代器)
- python基础教程_学习笔记11:魔法方法、属性和迭代器
- Python学习之魔法方法
- Python学习之模块间互相调用方法详解