日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python內置方法和屬性應用:反射和單例(推薦)

瀏覽:33日期:2022-07-20 13:36:03

1. 前言

python除了豐富的第三方庫外,本身也提供了一些內在的方法和底層的一些屬性,大家比較常用的如dict、list、set、min、max、range、sorted等。筆者最近在做項目框架時涉及到一些不是很常用的方法和屬性,在本文中和大家做下分享。

2. 內置方法和函數介紹

enumerate

如果你需要遍歷可迭代的對象,有需要獲取它的序號,可以用enumerate, 每一個next返回的是一個tuple

list1 = [1, 2, 3, 4] list2 = [4, 3, 2, 1] for idx, value in enumerate(list1): print(idx, value, list2[idx]) # 0 1 4 # 1 2 3 # 2 3 2 # 3 4 1

zip zip從參數中的多個迭代器取元素組合成一個新的迭代器;

# 給list加上序號 b = [4, 3, 2, 1] for i in zip(range(len(b)), b): print(i) # (0, 4) # (1, 3) # (2, 2) # (3, 1) globals():一個描述當前執行過程中全局符號表的字典,可以看出你執行的所有過程 id(object):python對象的唯一標識 staticmethod 類靜態函數注解

@staticmethod def test(): print(’this is static method’) Foo.test = test Foo.test()

類的屬性 我們來看下一個類的申明,如下:

class Foo(): '''this is test class''' def __init__(self, name): self.name = name def run(self): print(’running’)

# 列出類的所有成員和屬性 dir(Foo) [’__class__’, ’__delattr__’, ’__dict__’, ’__dir__’, ’__doc__’, ’__eq__’, ’__format__’, ’__ge__’, ’__getattribute__’, ’__gt__’, ’__hash__’, ’__init__’, ’__init_subclass__’, ’__le__’, ’__lt__’, ’__module__’, ’__ne__’, ’__new__’, ’__reduce__’, ’__reduce_ex__’, ’__repr__’, ’__setattr__’, ’__sizeof__’, ’__str__’, ’__subclasshook__’, ’__weakref__’, ’run’] # 類的注釋 Foo.__doc__ # ’this is test class’ # 類自定義屬性 Foo.__dict__ mappingproxy({’__module__’: ’__main__’, ’__doc__’: ’this is test class’, ’__init__’: <function __main__.Foo.__init__(self, name)>, ’run’: <function __main__.Foo.run(self)>, ’__dict__’: <attribute ’__dict__’ of ’Foo’ objects>, ’__weakref__’: <attribute ’__weakref__’ of ’Foo’ objects>}) # 類的父類 Foo.__base__ # 類的名字 Foo.__name__

類的實例化和初始化

# python類先通過__new__實例化,再調用__init__進行初始化類成員 foo = Foo(’milk’)

類的屬性添加和訪問

# 類的訪問 foo.name foo.run() # 可以通過setattr 動態的添加屬性 def method(): print('cow') setattr(foo, 'type', 'cow') setattr(foo, 'getcow', method) # cow foo.type foo.getcow() # 動態刪除屬性 delattr delattr(foo, 'type') # getattr 獲取成員屬性 if hasattr(foo, 'run'): # 判斷是否有屬性 func = getattr(foo, 'run') func()

3. 單例模式應用

單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。單例模式要求在類的使用過程中只實例化一次,所有對象都共享一個實例。創建的方法是在實例的時候判斷下是否已經實例過了,有則返回實例化過的全局實例。python是如何實現的呢?關鍵是找到實例化的地方,對就是前面說的__new__

class Singleton(object): def __new__(cls, *args, **kwargs): if not hasattr(cls, ’_instance’): cls._instance = object.__new__(cls) return cls._instance def __init__(self, name): self.name = name a = Singleton(’name1’) b = Singleton(’name2’) print(id(a), id(b)) print(a.name, b.name) # 1689352213112 1689352213112 # name2 name2

4. 反射應用

反射在許多框架中都有使用到,簡單就是通過類的名稱(字符串)來實例化類。一個典型的場景就是通過配置的方式來動態控制類的執行,比如定時任務的執行,通過維護每個定時任務類的執行時間,在執行時間到的時候,通過反射方式實例化類,執行任務,在java中也非常的常見。

python的實現可以通過上面說的getattr獲取模塊中的類, 通過methodcaller來調用方法。我們來看一個簡單的例子

import importlib from operator import methodcaller class Foo(): '''this is test class''' def __init__(self, name): self.name = name def run(self, info): print(’running %s’ % info) # 類所在的模塊,默認情況__main__, 可以通過Foo.__dict__ 中’__module__’獲取 api_module = importlib.import_module(’__main__’) # getattr獲取模塊中的類, 這里Foo是字符串哦 clazz = getattr(api_module, ’Foo’) # 實例化 params = ['milk'] instance = clazz(*params) # 方法調用, 方法也是字符串methodcaller(方法名, 方法參數) task_result = methodcaller('run', 'reflection')(instance) # running reflection

5. 總結

本文通過分享了python內置方法和屬性, 并在單例模式和反射中進行應用。希望對你有幫助,歡迎交流@mintel 要點總結如下:

dir下類 查看類自定義屬性__dict__ __new__實例化類,__init__初始化類 getattr 獲取屬性 setattr 設置屬性 記住importlib和methodcaller

到此這篇關于Python內置方法和屬性應用:反射和單例的文章就介紹到這了,更多相關Python內置方法和屬性內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品在线二区| 91成人在线网站| 精品视频一二| 国产精品日本一区二区不卡视频| 日韩精品一区二区三区中文| 日本在线成人| 欧美一区影院| 国产高清日韩| 中文字幕人成乱码在线观看 | 久久国产影院| 四虎成人av| 久久精品123| 亚洲作爱视频| 丝袜亚洲另类欧美 | 婷婷综合在线| 蜜桃免费网站一区二区三区| 日韩中文字幕一区二区高清99| 青青青国产精品| 福利精品在线| 激情综合网五月| 日韩国产欧美三级| 久久一区欧美| 国产91久久精品一区二区| 国产偷自视频区视频一区二区| 亚洲伊人影院| 麻豆免费精品视频| 久久亚洲在线| 欧美一级网址| 国产aⅴ精品一区二区三区久久 | 欧美a一区二区| 蜜桃精品在线| 亚洲伊人精品酒店| 精品欧美视频| 国产一区二区高清| 久久国产精品色av免费看| 樱桃视频成人在线观看| 黄色在线一区| 国产精品久久久久77777丨| 国产麻豆久久| 日韩国产一区二| 日韩精品欧美激情一区二区| 蜜桃av一区二区三区电影| 久久只有精品| 午夜在线播放视频欧美| 鲁大师精品99久久久| 黑丝一区二区三区| 免费一区二区三区在线视频| 日韩亚洲国产欧美| 欧美精品1区| 免费日韩av片| 97精品国产| 亚洲欧美日韩国产综合精品二区| 免费视频一区二区三区在线观看| 99国产精品久久久久久久| 国产麻豆精品久久| 欧美特黄视频| 精品九九在线| 亚洲色图国产| 日韩精品网站| 免费看久久久| 亚洲人成亚洲精品| 色综合www| 国产精品午夜一区二区三区| 香蕉国产精品| 国产不卡av一区二区| 日韩在线观看一区二区三区| 日韩精品2区| 久久国产婷婷国产香蕉| 午夜精品婷婷| 新版的欧美在线视频| 国产欧美日韩在线一区二区 | 国产一区二区三区四区二区| 亚洲精品成a人ⅴ香蕉片| 日韩一区电影| 国产精品嫩模av在线| 久久国产精品99国产| 日韩欧美一区二区三区在线观看| 国产精品亚洲四区在线观看| 一区在线视频观看| 日韩国产在线| 精品淫伦v久久水蜜桃| 日本午夜精品久久久久| 亚洲激情社区| 99精品电影| av综合电影网站| 精品视频一区二区三区在线观看| 日韩欧美高清一区二区三区| 偷拍欧美精品| 欧洲一级精品| 黄色aa久久| 久久精品国产亚洲一区二区三区| 日韩精品乱码av一区二区| 日韩视频一区| 久久久男人天堂| 蜜桃久久久久| 国产精品网在线观看| 日韩精品免费视频一区二区三区 | 在线看片福利| www在线观看黄色| 国产一区二区三区不卡av | 亚洲激情av| jiujiure精品视频播放| 中文在线中文资源| 国产999精品在线观看| 美腿丝袜亚洲一区| 国产欧美69| 国产精品一区二区精品视频观看| 日韩1区2区3区| 亚洲另类黄色| 日韩精品社区| 欧美中文高清| 欧美视频久久| 欧美日本不卡| 国产精品亚洲片在线播放| 国产伦精品一区二区三区视频| 日韩精品一级| 国产欧美91| 国产日韩欧美三级| 国产精品第一| 精品理论电影在线| 成人一区而且| av在线日韩| 欧美 日韩 国产一区二区在线视频| 亚洲不卡系列| 欧美网站在线| 亚洲无线观看| 婷婷精品在线| 国产欧美午夜| 国产一区调教| 国产精品亚洲一区二区三区在线观看| 久久激情一区| 夜夜嗨一区二区| 美女日韩在线中文字幕| 最新亚洲国产| 国产日产一区| 日韩av片子| 91国语精品自产拍| 亚洲制服一区| 国产精品免费大片| 日韩精品91| 亚洲欧美日韩国产一区二区| 日韩精品成人| 久久中文精品| 国产在线欧美| 综合日韩在线| 老鸭窝一区二区久久精品| 在线看片福利| 午夜国产精品视频| 日本亚洲不卡| 国产在线不卡一区二区三区| 私拍精品福利视频在线一区| 999在线观看精品免费不卡网站| 午夜电影一区| 精品国产亚洲日本| 欧美69视频| 91精品国产自产精品男人的天堂| 麻豆一区二区99久久久久| 欧美日韩免费看片| 亚洲尤物av| 精品高清久久| 黄色免费成人| 欧美精品福利| 日韩在线观看| 美女国产精品| 老色鬼精品视频在线观看播放| 亚洲v在线看| 日韩国产欧美视频| 精品免费av在线| 日韩激情av在线| 精品免费av在线| 日韩一区二区三区在线看| 国产精品久久久久久久久久10秀| 国产免费成人| 久久影视三级福利片| 国产日韩综合| 久久精品资源| 久久亚洲精品伦理| 欧美激情一区| 鲁大师成人一区二区三区| 精品美女视频 | 一二三区精品| 色一区二区三区四区| 蜜桃91丨九色丨蝌蚪91桃色| 成人午夜在线| 亚洲日本国产| 亚洲天堂1区| 日本色综合中文字幕| 欧美日韩国产v| 欧美天堂一区二区| 日韩亚洲在线| 国产一区一一区高清不卡| 视频一区欧美日韩| 国产99在线| 国产日韩视频在线| 国产精品腿扒开做爽爽爽挤奶网站| 九九99久久精品在免费线bt| 亚洲精品综合| 亚洲国产影院| 日韩av二区| 国产精品调教|