python 魔法方法什么时候用_python学习之魔法方法的调用

在python中存在一些前面和后边都加上两个下划线的函数,这种函数会在一些特殊的情况下被调用,而不是根据他们的名字被调用。下面详细介绍几个重要的函数.

__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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值