gpt4 book ai didi

python - 为什么 `list()` 即使 DataFrame 没有实现/继承 __iter__() 也能工作?

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:26 25 4
gpt4 key购买 nike

我找不到在 rpy2.robjects.DataFrame 及其任何基类中定义的 __iter__() 方法*

然而,我可以使用 this code将 DataFrame 转换为字典:

from rpy2.robjects import DataFrame
dataframe = DataFrame(...)

d = dict(zip(dataframe.names, map(list, list(dataframe))))

为什么上面代码中的 list(dataframe) 没有触发 TypeError: 'DataFrame' object is not iterable


* 通过运行以下代码确定:

def test_attr(cls, attr):
if attr in cls.__dict__:
print cls.__name__
else:
for base in cls.__bases__:
test_attr(base, attr)
Python 2.7.8 (default, Oct 18 2014, 05:53:47)... >>> from rpy2.robjects import DataFrame>>> test_attr(DataFrame, '__iter__')

最佳答案

我认为每个机器人都实现了 rinterface

可以看到__iter__方法

https://bitbucket.org/lgautier/rpy2/src/08ec0c15bd5ef8170ad8a49c2dc2b4a8dea36d64/rpy/rinterface/_rinterface.c?at=default#cl-2446

至少我认为......它很快就会变得非常纠结

关于python - 为什么 `list(<DataFrame>)` 即使 DataFrame 没有实现/继承 __iter__() 也能工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com