__call__方法
#__call__方法
class Foo:
def __init__(self):
print("init")
def __call__(self,*args,**kwargs):
print("call")
obj=Foo()
obj()
# init
# call
Foo()()
# init
# call
#对象()只执行__call__方法,非常特殊
#__init__也是,创建对象就执行__init__方法
#\__int\__方法
s="123"
s=str("123") #等价
i=int(s)
print(i,type(i)) #自己转化成int类型
# 123 <class ‘int‘>
__int__方法
class foo1:
def __init__(self):
pass
def __int__(self):
return 1234
def __str__(self): #用于打印,很重要,非常常见
return "haha"
obj2=foo1()
print(obj2,type(obj2))
#int 加上对象,执行对象的__int__方法,并将返回值赋给int对象
r=int(obj2)
print(r)
# <__main__.foo1 object at 0x000000FFA667AA90> <class ‘__main__.foo1‘>
# 1234
__str__方法
#__str__方法
class foo2:
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self): #用于打印,很重要,非常常见
return "%s-%s"%(self.name,self.age)
obj3=foo2("jiaxin",10)
print(obj3,type(obj3))
# jiaxin-10 <class ‘__main__.foo2‘>
原文地址:http://blog.51cto.com/10777193/2102964