当方法里关键字yield时,声明的变量没有创建,导致其他方法无法调用,应该next()一下,才能创建
class A(object):
def __init__(self,name):
self.name = name
self.add()
def add(self):
self.b= 1
self.resp = "haha"
while self.b<10:
self.b+= 1
yield self.b
def p(self):
chunk = self.resp
print(chunk+str(self.b)
a = A("a")
如果a.p()调用, 会出现报错,p()方法找不到self.b
这是因为当程序加载到yield时,会停止,无法将add()方法实例
应该next(a.add())
a.p()才能获取到self.resp定义的变量
当调用next(a.add())方法
永远打印的只有数字2
如果d = a.add()
next(d)
可以循环打印出self.b的值,2,3,4,5,6,7,8,9
这点得琢磨一下,为什么next(a.add())始终打印数字2呢
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)