[英]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.