如何遍历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抓包程序mitmproxy安装和使用过程图解

    Python抓包程序mitmproxy安装和使用过程图解

    这篇文章主要介绍了Python mitmproxy包安装和使用过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python pandas dataframe 去重函数的具体使用

    python pandas dataframe 去重函数的具体使用

    这篇文章主要介绍了python pandas dataframe 去重函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Python自动化办公之Word转PDF的实现

    Python自动化办公之Word转PDF的实现

    这篇文章主要为大家详细介绍一下如何在 windows、mac、linux 三种系统中都可以生成 PDF 的解决方案,文中的示例代码讲解详细,需要的可以参考一下
    2022-05-05
  • Selenium鼠标与键盘事件常用操作方法示例

    Selenium鼠标与键盘事件常用操作方法示例

    这篇文章主要介绍了Selenium鼠标与键盘事件常用操作方法,结合实例形式分析了Selenium鼠标事件与键盘事件常见方法与相关使用技巧,需要的朋友可以参考下
    2018-08-08
  • Python对接PicGo实现图片自动加水印并上传操作示例

    Python对接PicGo实现图片自动加水印并上传操作示例

    这篇文章主要为大家介绍了Python对接PicGo实现图片自动加水印并上传的操作示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • 使用Python创建websocket服务端并给出不同客户端的请求

    使用Python创建websocket服务端并给出不同客户端的请求

    本文主要介绍了使用Python创建websocket服务端并给出不同客户端的请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Python画图时如何调用本地字体

    Python画图时如何调用本地字体

    这篇文章主要为大家介绍在通过Python绘制图画时如何调用本地的字体,从而解决中文乱码的问题。感兴趣的小伙伴快来跟随小编学习学习吧
    2021-12-12
  • Python反射操作对象属性方法详解

    Python反射操作对象属性方法详解

    这篇文章主要介绍了Python反射操作对象属性方法详解,在Python面对对象中,通过字符串的形式去操作对象的属性方法就称之为反射(在Python中一切事物都是可以为对象),需要的朋友可以参考下
    2023-08-08
  • Python网页解析器使用实例详解

    Python网页解析器使用实例详解

    这篇文章主要介绍了Python网页解析器使用实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 使用python将mdb数据库文件导入postgresql数据库示例

    使用python将mdb数据库文件导入postgresql数据库示例

    mdb格式文件可以通过mdbtools工具将内中包含的每张表导出到csv格式文件。由于access数据库和postgresQL数据库格式上会存在不通性,所以使用python的文件处理,将所得csv文件修改成正确、能识别的格式
    2014-02-02

最新评论