本篇內(nèi)容介紹了“怎么掌握Python內(nèi)置方法和屬性應(yīng)用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),巫溪網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:巫溪等地區(qū)。巫溪做網(wǎng)站價(jià)格咨詢:13518219792
1. 前言
python除了豐富的第三方庫(kù)外,本身也提供了一些內(nèi)在的方法和底層的一些屬性,大家比較常用的如dict、list、set、min、max、range、sorted等。
2. 內(nèi)置方法和函數(shù)介紹
enumerate
如果你需要遍歷可迭代的對(duì)象,有需要獲取它的序號(hào),可以用enumerate, 每一個(gè)next返回的是一個(gè)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從參數(shù)中的多個(gè)迭代器取元素組合成一個(gè)新的迭代器;
# 給list加上序號(hào) b = [4, 3, 2, 1] for i in zip(range(len(b)), b): print(i) # (0, 4) # (1, 3) # (2, 2) # (3, 1)
globals():一個(gè)描述當(dāng)前執(zhí)行過(guò)程中全局符號(hào)表的字典,可以看出你執(zhí)行的所有過(guò)程
id(object):python對(duì)象的唯一標(biāo)識(shí)
staticmethod 類靜態(tài)函數(shù)注解
@staticmethod def test(): print('this is static method') Foo.test = test Foo.test()類的屬性 我們來(lái)看下一個(gè)類的申明,如下:
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__類的實(shí)例化和初始化
# python類先通過(guò)__new__實(shí)例化,再調(diào)用__init__進(jìn)行初始化類成員 foo = Foo('milk')類的屬性添加和訪問(wèn)
# 類的訪問(wèn) foo.name foo.run() # 可以通過(guò)setattr 動(dòng)態(tài)的添加屬性 def method(): print("cow") setattr(foo, "type", "cow") setattr(foo, "getcow", method) # cow foo.type foo.getcow() # 動(dòng)態(tài)刪除屬性 delattr delattr(foo, "type") # getattr 獲取成員屬性 if hasattr(foo, "run"): # 判斷是否有屬性 func = getattr(foo, "run") func()3. 單例模式應(yīng)用
單例模式(Singleton Pattern)是 Java 中最簡(jiǎn)單的設(shè)計(jì)模式之一。單例模式要求在類的使用過(guò)程中只實(shí)例化一次,所有對(duì)象都共享一個(gè)實(shí)例。創(chuàng)建的方法是在實(shí)例的時(shí)候判斷下是否已經(jīng)實(shí)例過(guò)了,有則返回實(shí)例化過(guò)的全局實(shí)例。python是如何實(shí)現(xiàn)的呢?關(guān)鍵是找到實(shí)例化的地方,對(duì)就是前面說(shuō)的__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 name24. 反射應(yīng)用
反射在許多框架中都有使用到,簡(jiǎn)單就是通過(guò)類的名稱(字符串)來(lái)實(shí)例化類。一個(gè)典型的場(chǎng)景就是通過(guò)配置的方式來(lái)動(dòng)態(tài)控制類的執(zhí)行,比如定時(shí)任務(wù)的執(zhí)行,通過(guò)維護(hù)每個(gè)定時(shí)任務(wù)類的執(zhí)行時(shí)間,在執(zhí)行時(shí)間到的時(shí)候,通過(guò)反射方式實(shí)例化類,執(zhí)行任務(wù),在java中也非常的常見(jiàn)。
python的實(shí)現(xiàn)可以通過(guò)上面說(shuō)的getattr獲取模塊中的類, 通過(guò)methodcaller來(lái)調(diào)用方法。我們來(lái)看一個(gè)簡(jiǎn)單的例子
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) # 類所在的模塊,默認(rèn)情況__main__, 可以通過(guò)Foo.__dict__ 中'__module__'獲取 api_module = importlib.import_module('__main__') # getattr獲取模塊中的類, 這里Foo是字符串哦 clazz = getattr(api_module, 'Foo') # 實(shí)例化 params = ["milk"] instance = clazz(*params) # 方法調(diào)用, 方法也是字符串methodcaller(方法名, 方法參數(shù)) task_result = methodcaller("run", "reflection")(instance) # running reflection“怎么掌握Python內(nèi)置方法和屬性應(yīng)用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)站欄目:怎么掌握Python內(nèi)置方法和屬性應(yīng)用
本文鏈接:http://www.chinadenli.net/article12/igjgdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、Google、網(wǎng)站內(nèi)鏈、面包屑導(dǎo)航、虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)