如何遍历python中的对象属性

 更新时间:2023年11月10日 11:15:31   作者:Rnan-prince  
这篇文章主要介绍了如何遍历python中的对象属性问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

遍历python中的对象属性

python开发中有时候需要遍历某对象的属性list

class Person(object):
    """
    职员信息
    """
    name = 0
    age = 1
    id = 2
    group = 3
 
 
attr = [a for a in dir(Person) if not a.startswith('__')]
for a in attr:
    print(a, getattr(Person, a))
 
"""
age 1
group 3
id 2
name 0
"""

迭代器自定义遍历对象

要说起迭代器自定义遍历对象,首页要知道什么是迭代器?

生成器 概念在Java,Python等语言中都是具备的,ES6也添加到了JavaScript中。Iterator可以使我们不需要初始化集合,以及索引的变量,而是使用迭代器对象的 next 方法,返回集合的下一项的值,偏向程序化

迭代器 是带有特殊接口的对象。含有一个next()方法,调用返回一个包含两个属性的对象,分别是value和done,value表示当前位置的值done表示是否迭代完,当为true的时候,调用next就无效了。

ES5中遍历集合通常都是 for循环,数组还有 forEach 方法,对象就是 for-in,ES6 中又添加了 MapSet,而迭代器可以统一处理所有集合数据的方法。迭代器是一个接口,只要你这个数据结构暴露了一个iterator的接口,那就可以完成迭代。

ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>迭代器</title>
</head>
<body>
    <script>
        //声明一个数组
        const xiyou = ['唐僧','孙悟空','猪八戒','沙僧'];
 
        //使用 for...of 遍历数组
        // for(let v of xiyou){
        //     console.log(v);
        // }
 
        let iterator = xiyou[Symbol.iterator]();
 
        //调用对象的next方法
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
    </script>
</body>
</html>

如上所示,可以使用 for...of 遍历数组,直接得到值的遍历。也可以使用迭代器的方式进行遍历。

迭代器自定义遍历对象遍历对象中的某一个属性?

举例:使用for..of遍历banji中stus数组?

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>自定义遍历数据</title>
</head>
 
<body>
    <script>
        //声明一个对象
        const banji = {
            name: "终极一班",
            stus: [
                'xiaoming',
                'xiaoning',
                'xiaotian',
                'knight'
            ],
            [Symbol.iterator]() {
                //索引变量
                let index = 0;
                //保存外面的this对象
                let _this = this;
                return {
                    next: function () {
                        if (index < _this.stus.length) {
                            const result = { value: _this.stus[index], done: false };
                            //下标自增
                            index++;
                            //返回结果
                            return result;
                        }else{
                            return {value: undefined, done: true};
                        }
                    }
                };
            }
        }
 
        //遍历这个对象 
        for (let v of banji) {
            console.log(v);
        }
    </script>
</body>
 
</html>

如上所示,我们使用自定义的一个[Symbol.iterator](){ }函数,在内部完成一个迭代器的操作,然后在外部通过for..of遍历,即可实现效果;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python文件打包工具一站式指南

    Python文件打包工具一站式指南

    这篇文章主要为大家介绍了Python文件打包工具一站式指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python PyQt5模块实现一个浏览器的示例代码

    Python PyQt5模块实现一个浏览器的示例代码

    在项目开发中,有的应用程序可以运行在web浏览器,本文主要介绍了Python PyQt5模块实现一个浏览器的示例代码,分享给大家,感兴趣的可以了解一下
    2021-07-07
  • 简单了解python代码优化小技巧

    简单了解python代码优化小技巧

    这篇文章主要介绍了简单了解python代码优化小技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2019-07-07
  • python生成随机mac地址的方法

    python生成随机mac地址的方法

    这篇文章主要介绍了python生成随机mac地址的方法,涉及Python操作随机字符串的技巧,需要的朋友可以参考下
    2015-03-03
  • python实现一组典型数据格式转换

    python实现一组典型数据格式转换

    这篇文章主要为大家详细介绍了python实现一组典型数据格式转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • python如何基于redis实现ip代理池

    python如何基于redis实现ip代理池

    这篇文章主要介绍了python如何基于redis实现ip代理池,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python wxPython创建文件复制工具

    Python wxPython创建文件复制工具

    wxPython是一个功能强大的 GUI 框架,它允许开发者通过 Python 轻松构建跨平台的桌面应用,本文将使用wxPython创建一个文件复制工具,感兴趣的可以了解下
    2025-02-02
  • Python 实现微信自动回复的方法

    Python 实现微信自动回复的方法

    这篇文章主要介绍了Python 实现微信自动回复的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • python pandas dataframe 按列或者按行合并的方法

    python pandas dataframe 按列或者按行合并的方法

    下面小编就为大家分享一篇python pandas dataframe 按列或者按行合并的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python实现图像处理ORB算法

    Python实现图像处理ORB算法

    ORB(Oriented FAST and Rotated BRIEF)算法是一种高效的特征检测和描述符,它在图像匹配中有广泛的应用,下面我们就来了解一下ORB算法的原理与实现吧
    2023-12-12

最新评论