python - 为什么这段代码打印 None ?

标签 python

尝试执行以下程序及其打印值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

关于python - 为什么这段代码打印 None ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38782905/

相关文章:

python - pyspark 使用 partitionby 对数据进行分区

python - 将 ORM 与 NoSQL 存储一起使用的不良做法?

python - 如何使用字典将数字代码翻译成单词

Python开发-elementtree XML和字符串操作

python - 用 Python 实现文本编辑器

python - tf.nn.sigmoid_cross_entropy_with_logits 权重

python - Flask-sqlalchemy 禁用整个 session 的自动刷新

python - 如何在圆柱面上生成规则点

python - 如何覆盖 django rest 框架 ModelViewSet 中的更新操作?

python - 如何为 Python 2.7 安装 PyQT4?