首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蟒蛇的自我是什么?

蟒蛇的自我是什么?
EN

Stack Overflow用户
提问于 2015-08-27 06:57:58
回答 2查看 45关注 0票数 0

最近,我在python中遇到了以下代码

代码语言:javascript
复制
for var in self: 
    self.some_list.append(var)

我对自我知之甚少,但上面的代码确实让我觉得,有人能解释一下这段代码意味着什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-27 07:11:20

当您使用for ... in ...语法迭代某个对象时,您实际上是在调用它的__iter__方法。例如,

代码语言:javascript
复制
class Iterable(object):

    def __init__(self, *args):
        self.items = args 

    def dump(self):
        for val in self:
            print 'I have %s!' % str(val)

    def __iter__(self):
        for val in self.items:
            yield val

i = Iterable(1, 2, 3, 'foo', 'bar')
i.dump()

dump方法中,for val in self迭代由__iter__实现的self.values列表。如果删除__iter__方法,Python将不知道该做什么,您将得到一个TypeError ('Iterable‘对象不可迭代)。

票数 0
EN

Stack Overflow用户

发布于 2015-08-27 07:00:16

在python中,标识符self没有特殊的含义,它可以保存您放入的任何内容(通过赋值或函数的参数)。

唯一的问题是,实例方法在调用时会将调用该方法的对象作为第一个参数,通常(按照惯例)称为self

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32242642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档