如何遍歷python中的對象屬性
遍歷python中的對象屬性
python開發(fā)中有時候需要遍歷某對象的屬性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循環(huán),數(shù)組還有 forEach 方法,對象就是 for-in,ES6 中又添加了 Map 和 Set,而迭代器可以統(tǒng)一處理所有集合數(shù)據(jù)的方法。迭代器是一個接口,只要你這個數(shù)據(jù)結構暴露了一個iterator的接口,那就可以完成迭代。
ES6創(chuàng)造了一種新的遍歷命令for...of循環(huán),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> //聲明一個數(shù)組 const xiyou = ['唐僧','孫悟空','豬八戒','沙僧']; //使用 for...of 遍歷數(shù)組 // 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 遍歷數(shù)組,直接得到值的遍歷。也可以使用迭代器的方式進行遍歷。
迭代器自定義遍歷對象遍歷對象中的某一個屬性?
舉例:使用for..of遍歷banji中stus數(shù)組?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>自定義遍歷數(shù)據(jù)</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](){ }函數(shù),在內部完成一個迭代器的操作,然后在外部通過for..of遍歷,即可實現(xiàn)效果;
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python PyQt5模塊實現(xiàn)一個瀏覽器的示例代碼
在項目開發(fā)中,有的應用程序可以運行在web瀏覽器,本文主要介紹了Python PyQt5模塊實現(xiàn)一個瀏覽器的示例代碼,分享給大家,感興趣的可以了解一下2021-07-07python實現(xiàn)一組典型數(shù)據(jù)格式轉換
這篇文章主要為大家詳細介紹了python實現(xiàn)一組典型數(shù)據(jù)格式轉換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12Python wxPython創(chuàng)建文件復制工具
wxPython是一個功能強大的 GUI 框架,它允許開發(fā)者通過 Python 輕松構建跨平臺的桌面應用,本文將使用wxPython創(chuàng)建一個文件復制工具,感興趣的可以了解下2025-02-02python pandas dataframe 按列或者按行合并的方法
下面小編就為大家分享一篇python pandas dataframe 按列或者按行合并的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04