python 类和generator的一个小坑

python 类和generator的一个小坑,第1张

当方法里关键字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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存