日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Python教程:types—-動(dòng)態(tài)類(lèi)型創(chuàng)建和內(nèi)置類(lèi)型名稱(chēng)

types —- 動(dòng)態(tài)類(lèi)型創(chuàng)建和內(nèi)置類(lèi)型名稱(chēng)

源代碼: Lib/types.py

專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)涿鹿免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。


此模塊定義了一些工具函數(shù),用于協(xié)助動(dòng)態(tài)創(chuàng)建新的類(lèi)型。

它還為某些對(duì)象類(lèi)型定義了名稱(chēng),這些名稱(chēng)由標(biāo)準(zhǔn) python 解釋器所使用,但并不像內(nèi)置的 int 或 str 那樣對(duì)外公開(kāi)。

最后,它還額外提供了一些類(lèi)型相關(guān)但重要程度不足以作為內(nèi)置對(duì)象的工具類(lèi)和函數(shù)。

動(dòng)態(tài)類(lèi)型創(chuàng)建

types.new_class(name, bases=(), kwds=None, exec_body=None)

使用適當(dāng)?shù)脑?lèi)動(dòng)態(tài)地創(chuàng)建一個(gè)類(lèi)對(duì)象。

前三個(gè)參數(shù)是組成類(lèi)定義頭的部件:類(lèi)名稱(chēng),基類(lèi) (有序排列),關(guān)鍵字參數(shù) (例如 metaclass)。

exec_body 參數(shù)是一個(gè)回調(diào)函數(shù),用于填充新創(chuàng)建類(lèi)的命名空間。 它應(yīng)當(dāng)接受類(lèi)命名空間作為其唯一的參數(shù)并使用類(lèi)內(nèi)容直接更新命名空間。 如果未提供回調(diào)函數(shù),則它就等效于傳入 lambda ns: None

3.3 新版功能.

types.prepare_class(name, bases=(), kwds=None)

計(jì)算適當(dāng)?shù)脑?lèi)并創(chuàng)建類(lèi)命名空間。

參數(shù)是組成類(lèi)定義頭的部件:類(lèi)名稱(chēng),基類(lèi) (有序排列) 以及關(guān)鍵字參數(shù) (例如 metaclass)。

返回值是一個(gè) 3 元組: metaclass, namespace, kwds

metaclass 是適當(dāng)?shù)脑?lèi),namespace 是預(yù)備好的類(lèi)命名空間而 kwds 是所傳入 kwds 參數(shù)移除每個(gè) 'metaclass' 條目后的已更新副本。 如果未傳入 kwds 參數(shù),這將為一個(gè)空字典。

3.3 新版功能.

在 3.6 版更改: 所返回元組中 namespace 元素的默認(rèn)值已被改變。 現(xiàn)在當(dāng)元類(lèi)沒(méi)有 __prepare__ 方法時(shí)將會(huì)使用一個(gè)保留插入順序的映射。

參見(jiàn)

元類(lèi)

這些函數(shù)所支持的類(lèi)創(chuàng)建過(guò)程的完整細(xì)節(jié)

PEP 3115 - Python 3000 中的元類(lèi)

引入 __prepare__ 命名空間鉤子

types.resolve_bases(bases)

動(dòng)態(tài)地解析 MRO 條目,具體描述見(jiàn) PEP 560。

此函數(shù)會(huì)在 bases 中查找不是 type 的實(shí)例的項(xiàng),并返回一個(gè)元組,其中每個(gè)具有 __mro_entries__ 方法的此種對(duì)象對(duì)象將被替換為調(diào)用該方法解包后的結(jié)果。 如果一個(gè) bases 項(xiàng)是 type 的實(shí)例,或它不具有 __mro_entries__ 方法,則它將不加改變地被包含在返回的元組中。

3.7 新版功能.

參見(jiàn)

PEP 560 - 對(duì) typing 模塊和泛型類(lèi)型的核心支持

標(biāo)準(zhǔn)解釋器類(lèi)型

此模塊為許多類(lèi)型提供了實(shí)現(xiàn) Python 解釋器所要求的名稱(chēng)。 它刻意地避免了包含某些僅在處理過(guò)程中偶然出現(xiàn)的類(lèi)型,例如 listiterator 類(lèi)型。

此種名稱(chēng)的典型應(yīng)用如 isinstance() 或 issubclass() 檢測(cè)。

如果你要實(shí)例化這些類(lèi)型中的任何一種,請(qǐng)注意其簽名在不同 Python 版本之間可能出現(xiàn)變化。

以下類(lèi)型有相應(yīng)的標(biāo)準(zhǔn)名稱(chēng)定義:

types.NoneType

None 的類(lèi)型。

3.10 新版功能.

types.FunctionType

types.LambdaType

用戶(hù)自定義函數(shù)以及由 lambda 表達(dá)式所創(chuàng)建函數(shù)的類(lèi)型。

引發(fā)一個(gè) 審計(jì)事件 function.__new__,附帶參數(shù) code。

此審計(jì)事件只會(huì)被函數(shù)對(duì)象的直接實(shí)例化引發(fā),而不會(huì)被普通編譯所引發(fā)。

types.GeneratorType

generator 迭代器對(duì)象的類(lèi)型,由生成器函數(shù)創(chuàng)建。

types.CoroutineType

coroutine 對(duì)象的類(lèi)型,由 async def 函數(shù)創(chuàng)建。

3.5 新版功能.

types.AsyncGeneratorType

asynchronous generator 迭代器對(duì)象的類(lèi)型,由異步生成器函數(shù)創(chuàng)建。

3.6 新版功能.

class types.CodeType(\*kwargs*)

代碼對(duì)象的類(lèi)型,例如 compile() 的返回值。

引發(fā) 審計(jì)事件 code.__new__ 附帶參數(shù) code, filename, name, argcount, posonlyargcount, kwonlyargcount, nlocals, stacksize, flags

請(qǐng)注意被審計(jì)的參數(shù)可能與初始化代碼所要求的名稱(chēng)或位置不相匹配。 審計(jì)事件只會(huì)被代碼對(duì)象的直接實(shí)例化引發(fā),而不會(huì)被普通編譯所引發(fā)。

  • replace(\*kwargs*)

    返回代碼對(duì)象的一個(gè)副本,使用指定的新字段值。

    3.8 新版功能.

types.CellType

單元對(duì)象的類(lèi)型:這種對(duì)象被用作函數(shù)中自由變量的容器。

3.8 新版功能.

types.MethodType

用戶(hù)自定義類(lèi)實(shí)例方法的類(lèi)型。

types.BuiltinFunctionType

types.BuiltinMethodType

內(nèi)置函數(shù)例如 len() 或 sys.exit() 以及內(nèi)置類(lèi)方法的類(lèi)型。 (這里所說(shuō)的“內(nèi)置”是指“以 C 語(yǔ)言編寫(xiě)”。)

types.WrapperDescriptorType

某些內(nèi)置數(shù)據(jù)類(lèi)型和基類(lèi)的方法的類(lèi)型,例如 object.__init__() 或 object.__lt__()。

3.7 新版功能.

types.MethodWrapperType

某些內(nèi)置數(shù)據(jù)類(lèi)型和基類(lèi)的 綁定 方法的類(lèi)型。 例如 object().__str__ 所屬的類(lèi)型。

3.7 新版功能.

types.NotImplementedType

NotImplemented 的類(lèi)型。

3.10 新版功能.

types.MethodDescriptorType

某些內(nèi)置數(shù)據(jù)類(lèi)型方法例如 str.join() 的類(lèi)型。

3.7 新版功能.

types.ClassMethodDescriptorType

某些內(nèi)置數(shù)據(jù)類(lèi)型 非綁定 類(lèi)方法例如 dict.__dict__['fromkeys'] 的類(lèi)型。

3.7 新版功能.

class types.ModuleType(name, doc=None)

模塊 的類(lèi)型。 構(gòu)造器接受待創(chuàng)建模塊的名稱(chēng)并以其 docstring 作為可選參數(shù)。

備注

如果你希望設(shè)置各種由導(dǎo)入控制的屬性,請(qǐng)使用 importlib.util.module_from_spec() 來(lái)創(chuàng)建一個(gè)新模塊。

  • __doc__

    模塊的 docstring。 默認(rèn)為 None。

  • __loader__

    用于加載模塊的 loader。 默認(rèn)為 None。

    This attribute is to match importlib.machinery.ModuleSpec.loader as stored in the __spec__ object.

    備注

    未來(lái)的 Python 版本可能會(huì)停止默認(rèn)設(shè)置此屬性。 為了避免這個(gè)潛在變化的影響,如果你明確地需要使用此屬性則推薦改從 __spec__ 屬性讀取或是使用 getattr(module, "__loader__", None)。

    在 3.4 版更改: 默認(rèn)為 None。 之前該屬性為可選項(xiàng)。

  • __name__

    模塊的名稱(chēng)。 應(yīng)當(dāng)能匹配 importlib.machinery.ModuleSpec.name。

  • __package__

    一個(gè)模塊所屬的 package。 如果模塊為最高層級(jí)的(即不是任何特定包的組成部分)則該屬性應(yīng)設(shè)為 '',否則它應(yīng)設(shè)為特定包的名稱(chēng) (如果模塊本身也是一個(gè)包則名稱(chēng)可以為 __name__)。 默認(rèn)為 None

    This attribute is to match importlib.machinery.ModuleSpec.parent as stored in the __spec__ object.

    備注

    未來(lái)的 Python 版本可能停止默認(rèn)設(shè)置此屬性。 為了避免這個(gè)潛在變化的影響,如果你明確地需要使用此屬性則推薦改從 __spec__ 屬性讀取或是使用 getattr(module, "__package__", None)。

    在 3.4 版更改: 默認(rèn)為 None。 之前該屬性為可選項(xiàng)。

  • __spec__

    模塊的導(dǎo)入系統(tǒng)相關(guān)狀態(tài)的記錄。 應(yīng)當(dāng)是一個(gè) importlib.machinery.ModuleSpec 的實(shí)例。

    3.4 新版功能.

types.EllipsisType

Ellipsis 的類(lèi)型。

3.10 新版功能.

class types.GenericAlias(t_origin, t_args)

形參化泛型 的類(lèi)型,例如 list[int]。

t_origin 應(yīng)當(dāng)是一個(gè)非形參化的泛型類(lèi),例如 list, tupledict。 t_args 應(yīng)當(dāng)是一個(gè)形參化 t_origin 的 tuple (長(zhǎng)度可以為 1):

 
 
 
 
  1. >>> from types import GenericAlias
  2. >>> list[int] == GenericAlias(list, (int,))
  3. True
  4. >>> dict[str, int] == GenericAlias(dict, (str, int))
  5. True

3.9 新版功能.

在 3.9.2 版更改: 此類(lèi)型現(xiàn)在可以被子類(lèi)化。

class types.UnionType

合并類(lèi)型表達(dá)式 的類(lèi)型。

3.10 新版功能.

class types.TracebackType(tb_next, tb_frame, tb_lasti, tb_lineno)

回溯對(duì)象的類(lèi)型,例如 sys.exc_info()[2] 中的對(duì)象。

請(qǐng)查看 語(yǔ)言參考 了解可用屬性和操作的細(xì)節(jié),以及動(dòng)態(tài)地創(chuàng)建回溯對(duì)象的指南。

types.FrameType

幀對(duì)象的類(lèi)型,例如 tb.tb_frame 中的對(duì)象,其中 tb 是一個(gè)回溯對(duì)象。

請(qǐng)查看 語(yǔ)言參考 了解可用屬性和操作的細(xì)節(jié)。

types.GetSetDescriptorType

使用 PyGetSetDef 在擴(kuò)展模塊中定義的對(duì)象的類(lèi)型,例如 FrameType.f_localsarray.array.typecode。 此類(lèi)型被用作對(duì)象屬性的描述器;它的目的與 property 類(lèi)型相同,但專(zhuān)門(mén)針對(duì)在擴(kuò)展模塊中定義的類(lèi)。

types.MemberDescriptorType

使用 PyMemberDef 在擴(kuò)展模塊中定義的對(duì)象的類(lèi)型,例如 datetime.timedelta.days。 此類(lèi)型被用作使用標(biāo)準(zhǔn)轉(zhuǎn)換函數(shù)的簡(jiǎn)單 C 數(shù)據(jù)成員的描述器;它的目的與 property 類(lèi)型相同,但專(zhuān)門(mén)針對(duì)在擴(kuò)展模塊中定義的類(lèi)。

CPython 實(shí)現(xiàn)細(xì)節(jié): 在 Python 的其它實(shí)現(xiàn)中,此類(lèi)型可能與 GetSetDescriptorType 完全相同。

class types.MappingProxyType(mapping)

一個(gè)映射的只讀代理。 它提供了對(duì)映射條目的動(dòng)態(tài)視圖,這意味著當(dāng)映射發(fā)生改變時(shí),視圖會(huì)反映這些改變。

3.3 新版功能.

在 3.9 版更改: 更新為支持 PEP 584 所新增的合并 (|) 運(yùn)算符,它會(huì)簡(jiǎn)單地委托給下層的映射。

  • key in proxy

    如果下層的映射中存在鍵 key 則返回 True,否則返回 False。

  • proxy[key]

    返回下層的映射中以 key 為鍵的項(xiàng)。 如果下層的映射中不存在鍵 key 則引發(fā) KeyError。

  • iter(proxy)

    返回由下層映射的鍵為元素的迭代器。 這是 iter(proxy.keys()) 的快捷方式。

  • len(proxy)

    返回下層映射中的項(xiàng)數(shù)。

  • copy()

    返回下層映射的淺拷貝。

  • get(key[, default])

    如果 key 存在于下層映射中則返回 key 的值,否則返回 default。 如果 default 未給出則默認(rèn)為 None,因而此方法絕不會(huì)引發(fā) KeyError。

  • items()

    返回由下層映射的項(xiàng) ((鍵, 值) 對(duì)) 組成的一個(gè)新視圖。

  • keys()

    返回由下層映射的鍵組成的一個(gè)新視圖。

  • values()

    返回由下層映射的值組成的一個(gè)新視圖。

  • reversed(proxy)

    返回一個(gè)包含下層映射的鍵的反向迭代器。

    3.9 新版功能.

附加工具類(lèi)和函數(shù)

class types.SimpleNamespace

一個(gè)簡(jiǎn)單的 object 子類(lèi),提供了訪(fǎng)問(wèn)其命名空間的屬性,以及一個(gè)有意義的 repr。

不同于 object,對(duì)于 SimpleNamespace 你可以添加和移除屬性。 如果一個(gè) SimpleNamespace 對(duì)象使用關(guān)鍵字參數(shù)進(jìn)行初始化,這些參數(shù)會(huì)被直接加入下層命名空間。

此類(lèi)型大致等價(jià)于以下代碼:

 
 
 
 
  1. class SimpleNamespace:
  2. def __init__(self, /, **kwargs):
  3. self.__dict__.update(kwargs)
  4. def __repr__(self):
  5. items = (f"{k}={v!r}" for k, v in self.__dict__.items())
  6. return "{}({})".format(type(self).__name__, ", ".join(items))
  7. def __eq__(self, other):
  8. if isinstance(self, SimpleNamespace) and isinstance(other, SimpleNamespace):
  9. return self.__dict__ == other.__dict__
  10. return NotImplemented

SimpleNamespace 可被用于替代 class NS: pass。 但是,對(duì)于結(jié)構(gòu)化記錄類(lèi)型則應(yīng)改用 namedtuple()。

3.3 新版功能.

在 3.9 版更改: repr 中的屬性順序由字母順序改為插入順序 (類(lèi)似 dict)。

types.DynamicClassAttribute(fget=None, fset=None, fdel=None, doc=None)

在類(lèi)上訪(fǎng)問(wèn) __getattr__ 的路由屬性。

這是一個(gè)描述器,用于定義通過(guò)實(shí)例與通過(guò)類(lèi)訪(fǎng)問(wèn)時(shí)具有不同行為的屬性。 當(dāng)實(shí)例訪(fǎng)問(wèn)時(shí)保持正常行為,但當(dāng)類(lèi)訪(fǎng)問(wèn)屬性時(shí)將被路由至類(lèi)的 __getattr__ 方法;這是通過(guò)引發(fā) AttributeError 來(lái)完成的。

這允許有在實(shí)例上激活的特性屬性,同時(shí)又有在類(lèi)上的同名虛擬屬性 (一個(gè)例子請(qǐng)參見(jiàn) enum.Enum)。

3.4 新版功能.

協(xié)程工具函數(shù)

types.coroutine(gen_func)

此函數(shù)可將 generator 函數(shù)轉(zhuǎn)換為返回基于生成器的協(xié)程的 coroutine function。 基于生成器的協(xié)程仍然屬于 generator iterator,但同時(shí)又可被視為 coroutine 對(duì)象兼 awaitable。 不過(guò),它沒(méi)有必要實(shí)現(xiàn) __await__() 方法。

如果 gen_func 是一個(gè)生成器函數(shù),它將被原地修改。

如果 gen_func 不是一個(gè)生成器函數(shù),則它會(huì)被包裝。 如果它返回一個(gè) collections.abc.Generator 的實(shí)例,該實(shí)例將被包裝在一個(gè) awaitable 代理對(duì)象中。 所有其他對(duì)象類(lèi)型將被原樣返回。

3.5 新版功能.


本文名稱(chēng):創(chuàng)新互聯(lián)Python教程:types—-動(dòng)態(tài)類(lèi)型創(chuàng)建和內(nèi)置類(lèi)型名稱(chēng)
網(wǎng)站地址:http://www.5511xx.com/article/coojcsi.html