繁体   English   中英

为什么此代码打印无?

[英]Why is this code printing None?

试图执行下面的程序以及其打印None值。 谁能帮我为什么其打印None

class Myself(object):
    def __init__(self):
        self.record={}
    def __iter__(self):
        self._roles = list(self.record.keys())
        #print ("in iter self._roles",type(self._roles))
        return self
    def __next__(self):
        if self._roles:
            return self._roles.pop()
        else:
            StopIteration

    def __setitem__(self,key,value):
        self.record[key]=value
    def __getitem__(self,key):
        return self.record.get(key,"No record found")

    def list_all(self):
        for detail in self.record:
            print (self.record[detail])

def main():
    mydetails = Myself()

    mydetails['name']='Python'
    mydetails['age']='26'
    mydetails['job']='software'
    mydetails.list_all()

    for x in mydetails:
        print (x,":",mydetails[x])

main()

您应该提高StopIteration

def __next__(self):
    if self._roles:
        return self._roles.pop()
    else:
        raise StopIteration

您需要提高 StopIteration执行:

def __next__(self):
    if self._roles:
        return self._roles.pop()
    else:
        raise StopIteration

因为您没有raise它,所以您只是在引用名称,而不会执行任何操作。 然后__next__方法刚刚结束,导致默认的隐式return None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM