__init__()在构造实例时使用,相当于构造器
__call__()在定义实例后,改变实例内的值
-
使用a=classname(*args)产生实例时,只会调用__init__(),在后续继续使用a(*args)的时候,会自动调用__call__()
class People():
def __init__(self,name,age):
self.name = name
self.age = age
print('enter init')
print ("name: {0}, age: {1}".format(self.name, self.age))
def __call__(self,name,age):
self.name = name
self.age = age
print('enter call')
print ("name: {0}, age: {1}".format(self.name, self.age))
if __name__ == "__main__":
people = People("nlj", 28)
people(123,465)
print (people.name)
print (people.age)
enter init
name: nlj, age: 28
enter call
name: 123, age: 465
123
465
class A:
def __init__(self):
print "init"
def __call__(self):
print "call"
a = A()
a()
init
call
参考文献: