目录
把对象当成函数一样调用
吼吼~补充一个小的知识点哦~就是括号里的参数!
具体的应用场景
原先一个实例化对象,并不会被调用,但是可以引入call
class Person:
pass
p=Person()
p()
这个时候引入__call__
把对象当成函数一样调用
class Person:
def __call__(self,*args,**kwargs):
print('***')
pass
p = Person()
p()
看,最后一行有括号了!!!!!所以对象能变成函数一样调用咯~不懂就问
callable什么意思!不能被调用,这回好了可以调用咯~~
吼吼~补充一个小的知识点哦~就是括号里的参数!
class Person:
def __call__(self,*args,**kwargs):
print('***',args,kwargs)
pass
p = Person()
p(123,456,name = 'sz')
括号里*args对应的是元组,然后**kwargs对应的是字典!
具体的应用场景
class PenFactory:
def __init__(self,p_type):
self.p_type = p_type
def __call__(self,p_color):
print('创建了一个%s类型的画笔,它是%s的'%(self.p_type,p_color))
gangbiF=PenFactory('钢笔')
gangbiF('红色')
gangbiF('黄色')
gangbiF('绿色')
可以避免代码的冗余~,首先先创建一个实例对象即gangbiF()括号里的东西,直接就是代替了self作为参数传入__init__里面
其次,写了__call__()函数,把实例对象能够当成函数一样调用。
于是啦~参数传进去了哦。颜色就确定啦!!!