展开全部
前面两位的方法2113其实和先初始化AA,在调用AA的test()效果是一样5261的,在初4102始化AA()的时候,调用的那次test()的返回1653值已经丢了,比如这样定义:class AA():
def __init__(self):
self.count=0
self.test()
def test(self):
""" test function"""
self.count +=1
return str(self.count)
def __str__(self):
return self.test()
def funcAA():
return AA().test()
然后测试,会发现,str(AA())和funcAA()的返回值都是2
要得到在初始化过程中的返回值,可以用变量把结果保存起来,比如:class BB():
def __init__(self):
self.count=0
self.result=self.test()
def test(self):
self.count += 1
return str(self.count)
然后b=BB()后,b.result的返回值是1.
至于多个返回的问题,还好python是弱类型的,可以这样:class CC():
def __init__(self, count):
self.count=count
self.result=self.test()
def test(self):
self.count += 1
if self.count % 2 == 0:
return self.count
else:
return "hello world"
结果如下: