型オブジェクト—Python3.11.11ドキュメント

型オブジェクトは標準の型(standardtype)に比べるとかなり大きな構造体です。各型オブジェクトは多くの値を保持しており、そのほとんどはC関数へのポインタで、それぞれの関数はその型の機能の小さい部分を実装しています。この節では、型オブジェクトの各フィールドについて詳細を説明します。各フィールドは、構造体内で出現する順番に説明されています。

特殊メソッド/特殊属性

O

T

D

I

constchar*

__name__

X

__getattribute__,__getattr__

G

__setattr__,__delattr__

%

__repr__

__hash__

__call__

__str__

unsignedlong

__doc__

__lt__,__le__,__eq__,__ne__,__gt__,__ge__

__iter__

__next__

__base__

__dict__

__get__

__set__,__delete__

__init__

__new__

__bases__

~

__mro__

__subclasses__

unsignedint

__del__

():Aslotnameinparenthesesindicatesitis(effectively)deprecated.

<>:NamesinanglebracketsshouldbeinitiallysettoNULLandtreatedasread-only.

[]:Namesinsquarebracketsareforinternaluseonly.

(asaprefix)meansthefieldisrequired(mustbenon-NULL).

列:

"O":setonPyBaseObject_Type

"D":default(ifslotissettoNULL)

X-PyType_ReadysetsthisvalueifitisNULL~-PyType_Readyalwayssetsthisvalue(itshouldbeNULL)-PyType_ReadymaysetthisvaluedependingonotherslotsAlsoseetheinheritancecolumn("I")."I":inheritance

Slot

特殊メソッド

__await__

__aiter__

__anext__

__add____radd__

__iadd__

__sub____rsub__

__isub__

__mul____rmul__

__imul__

__mod____rmod__

__imod__

__divmod____rdivmod__

__pow____rpow__

__ipow__

__neg__

__pos__

__abs__

__bool__

__invert__

__lshift____rlshift__

__ilshift__

__rshift____rrshift__

__irshift__

__and____rand__

__iand__

__xor____rxor__

__ixor__

__or____ror__

__ior__

__int__

void*

__float__

__floordiv__

__ifloordiv__

__truediv__

__itruediv__

__index__

__matmul____rmatmul__

__imatmul__

__len__

__getitem__

__setitem__,__delitem__

__add__

__mul__

__setitem____delitem__

__contains__

定義型(typedef)

引数型

返り値型

void

int

Py_hash_t

継承:

サブタイプはこのフィールドを継承しません。

型自体の型、別の言い方をするとメタタイプです。PyObject_HEAD_INITマクロで初期化され、通常は&PyType_Typeになります。しかし、(少なくとも)Windowsで利用できる動的ロード可能な拡張モジュールでは、コンパイラは有効な初期化ではないと文句をつけます。そこで、ならわしとして、PyObject_HEAD_INITにはNULLを渡して初期化しておき、他の操作を行う前にモジュールの初期化関数で明示的にこのフィールドを初期化することになっています。この操作は以下のように行います:

サブタイプはこのフィールドを継承します。

Thesefieldsarenotinheritedbysubtypes.

これらのフィールドは、型インスタンスのバイトサイズを計算できるようにします。

Foranytypewithvariable-lengthinstances,thisfieldmustnotbeNULL.

インスタンスのデストラクタ関数へのポインタです。この関数は(単量子NoneやEllipsisの場合のように)インスタンスが決してメモリ解放されない型でない限り必ず定義しなければなりません。シグネチャは次の通りです:

staticvoidfoo_dealloc(foo_object*self){PyTypeObject*tp=Py_TYPE(self);//freereferencesandbuffersheretp->tp_free(self);Py_DECREF(tp);}継承:

警告

バージョン3.8で変更:Beforeversion3.8,thisslotwasnamedtp_print.InPython2.x,itwasusedforprintingtoafile.InPython3.0to3.7,itwasunused.

オプションのポインタで、get-attribute-stringを行う関数を指します。

オプションのポインタで、属性の設定と削除を行う関数を指します。

バージョン3.5で追加:以前はtp_compareやtp_reservedとして知られていました。

デフォルト

このフィールドが設定されていない場合、<%sobjectat%p>の形式をとる文字列が返されます。%sは型の名前に、%pはオブジェクトのメモリアドレスに置き換えられます。

Py_hash_ttp_hash(PyObject*);通常時には-1を戻り値にしてはなりません;ハッシュ値の計算中にエラーが生じた場合、関数は例外をセットして-1を返さねばなりません。

PyObject*tp_call(PyObject*self,PyObject*args,PyObject*kwargs);継承:

オプションのポインタで、get-attributeを実装している関数を指します。

PyBaseObject_TypeusesPy_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE.

BitMasks:

型を別の型の基底タイプとして使える場合にセットされるビットです。このビットがクリアならば、この型のサブタイプは生成できません(Javaにおける"final"クラスに似たクラスになります)。

Thisisabitmaskofallthebitsthatpertaintotheexistenceofcertainfieldsinthetypeobjectanditsextensionstructures.Currently,itincludesthefollowingbits:Py_TPFLAGS_HAVE_STACKLESS_EXTENSION.

Thisbitindicatesthatobjectsbehavelikeunboundmethods.

Ifthisflagissetfortype(meth),then:

Thisflagenablesanoptimizationfortypicalmethodcallslikeobj.meth():itavoidscreatingatemporary"boundmethod"objectforobj.meth.

バージョン3.8で追加.

バージョン3.4で追加.

バージョン3.9で追加.

Thisbitissetfortypeobjectsthatareimmutable:typeattributescannotbesetnordeleted.

Thisflagisnotinherited.

バージョン3.10で追加.

注釈

参考

AnoptionalpointertoaNUL-terminatedCstringgivingthedocstringforthistypeobject.Thisisexposedasthe__doc__attributeonthetypeandinstancesofthetype.

オプションのポインタで、拡張比較関数を指します。シグネチャは次の通りです:

この関数は、比較結果を返すべきです。(普通はPy_TrueかPy_Falseです。)比較が未定義の場合は、Py_NotImplementedを、それ以外のエラーが発生した場合には例外状態をセットしてNULLを返さなければなりません。

定数

比較

<

<=

==

!=

>

>=

拡張比較関数(richcomparisonfunctions)を簡単に記述するためのマクロが定義されています:

エラー時には例外を設定して、関数からNULLでリターンします。

バージョン3.7で追加.

PyObject*tp_iter(PyObject*self);継承:

サブタイプはこのフィールドを継承しません(メソッドは別個のメカニズムで継承されています)。

サブタイプはこのフィールドを継承しません(メンバは別個のメカニズムで継承されています)。

サブタイプはこのフィールドを継承しません(算出属性は別個のメカニズムで継承されています)。

オプションのポインタで、型に関するプロパティを継承する基底タイプを指します。このフィールドのレベルでは、単継承(singleinheritance)だけがサポートされています;多重継承はメタタイプの呼び出しによる動的な型オブジェクトの生成を必要とします。

However,theunary'&'operatorappliedtoanon-staticvariablelikePyBaseObject_Typeisnotrequiredtoproduceanaddressconstant.Compilersmaysupportthis(gccdoes),MSVCdoesnot.Bothcompilersarestrictlystandardconforminginthisparticularbehavior.

(当たり前ですが)サブタイプはこのフィールドを継承しません。

サブタイプはこのフィールドを継承しません(が、この辞書内で定義されている属性は異なるメカニズムで継承されます)。

オプションのポインタで、デスクリプタのget関数を指します。

関数のシグネチャは次のとおりです

PyObject*tp_descr_get(PyObject*self,PyObject*obj,PyObject*type);継承:

オプションのポインタで、デスクリプタの値の設定と削除を行う関数を指します。

inttp_descr_set(PyObject*self,PyObject*obj,PyObject*value);値を削除するには、value引数にNULLを設定します。

オプションのポインタで、インスタンス初期化関数を指します。

成功のときには0を、エラー時には例外をセットして-1を返します。

オプションのポインタで、インスタンスのメモリ確保関数を指します。

PyObject*tp_alloc(PyTypeObject*self,Py_ssize_tnitems);継承:

Thisfieldisinheritedbystaticsubtypes,butnotbydynamicsubtypes(subtypescreatedbyaclassstatement).

オプションのポインタで、インスタンス生成関数を指します。

オプションのポインタで、インスタンスのメモリ解放関数を指します。シグネチャは以下の通りです:

Thisfieldisinheritedbystaticsubtypes,butnotbydynamicsubtypes(subtypescreatedbyaclassstatement)

オプションのポインタで、ガベージコレクタから呼び出される関数を指します。

基底型からなるタプルです。

Multipleinheritancedoesnotworkwellforstaticallydefinedtypes.Ifyousettp_basestoatuple,Pythonwillnotraiseanerror,butsomeslotswillonlybeinheritedfromthefirstbase.

このフィールドは継承されません。

未使用のフィールドです。内部でのみ利用されます。

Listofweakreferencestosubclasses.Internaluseonly.

この型オブジェクトに対する弱参照からなるリストの先頭です。

メソッドキャッシュへのインデックスとして使われます。内部使用だけのための関数です。

オプションのポインタで、インスタンスの終了処理関数を指します。シグネチャは以下の通りです:

このフィールドは決して継承されません。

バージョン3.9で追加:(このフィールドは3.8から存在していますが、3.9以降でしか利用できません)

ThisresultsintypesthatarelimitedrelativetotypesdefinedinPython:

以下は構造体の定義です:

typedefstruct{binaryfuncnb_add;binaryfuncnb_subtract;binaryfuncnb_multiply;binaryfuncnb_remainder;binaryfuncnb_divmod;ternaryfuncnb_power;unaryfuncnb_negative;unaryfuncnb_positive;unaryfuncnb_absolute;inquirynb_bool;unaryfuncnb_invert;binaryfuncnb_lshift;binaryfuncnb_rshift;binaryfuncnb_and;binaryfuncnb_xor;binaryfuncnb_or;unaryfuncnb_int;void*nb_reserved;unaryfuncnb_float;binaryfuncnb_inplace_add;binaryfuncnb_inplace_subtract;binaryfuncnb_inplace_multiply;binaryfuncnb_inplace_remainder;ternaryfuncnb_inplace_power;binaryfuncnb_inplace_lshift;binaryfuncnb_inplace_rshift;binaryfuncnb_inplace_and;binaryfuncnb_inplace_xor;binaryfuncnb_inplace_or;binaryfuncnb_floor_divide;binaryfuncnb_true_divide;binaryfuncnb_inplace_floor_divide;binaryfuncnb_inplace_true_divide;unaryfuncnb_index;binaryfuncnb_matrix_multiply;binaryfuncnb_inplace_matrix_multiply;}PyNumberMethods;注釈

二項関数と三項関数は、すべてのオペランドの型をチェックしなければならず、必要な変換を実装しなければなりません(すくなくともオペランドの一つは定義している型のインスタンスです).もし与えられたオペランドに対して操作が定義されなければ、二項関数と三項関数はPy_NotImplementedを返さなければならず、他のエラーが起こった場合は、NULLを返して例外を設定しなければなりません。

この構造体はマップ型プロトコルを実装するために使われる関数群へのポインタを保持しています。以下の3つのメンバを持っています:

この構造体はシーケンス型プロトコルを実装するために使われる関数群へのポインタを保持しています。

この関数のシグネチャは以下の通りです:

int(PyObject*exporter,Py_buffer*view,intflags);flagsで指定された方法でviewを埋めてほしいというexporterに対する要求を処理します。ステップ(3)を除いて、この関数の実装では以下のステップを行わなければなりません:

exporterがバッファプロバイダのチェインかツリーの一部であれば、2つの主要な方式が使用できます:

バージョン3.5で追加.

オブジェクトが非同期反復処理のプロトコルを実装していない場合、このスロットをNULLに設定します。

オブジェクトの属性の値を返します。

オブジェクトの属性に値を設定します。属性を削除するには、value(実)引数にNULLを設定します。

typedefstruct{PyObject_HEADconstchar*data;}MyObject;staticPyTypeObjectMyObject_Type={PyVarObject_HEAD_INIT(NULL,0).tp_name="mymod.MyObject",.tp_basicsize=sizeof(MyObject),.tp_doc=PyDoc_STR("Myobjects"),.tp_new=myobj_new,.tp_dealloc=(destructor)myobj_dealloc,.tp_repr=(reprfunc)myobj_repr,};より冗長な初期化子を用いた古いコードを(特にCPythonのコードベース中で)見かけることがあるかもしれません:

staticPyTypeObjectMyObject_Type={PyVarObject_HEAD_INIT(NULL,0)"mymod.MyObject",/*tp_name*/sizeof(MyObject),/*tp_basicsize*/0,/*tp_itemsize*/(destructor)myobj_dealloc,/*tp_dealloc*/0,/*tp_vectorcall_offset*/0,/*tp_getattr*/0,/*tp_setattr*/0,/*tp_as_async*/(reprfunc)myobj_repr,/*tp_repr*/0,/*tp_as_number*/0,/*tp_as_sequence*/0,/*tp_as_mapping*/0,/*tp_hash*/0,/*tp_call*/0,/*tp_str*/0,/*tp_getattro*/0,/*tp_setattro*/0,/*tp_as_buffer*/0,/*tp_flags*/PyDoc_STR("Myobjects"),/*tp_doc*/0,/*tp_traverse*/0,/*tp_clear*/0,/*tp_richcompare*/0,/*tp_weaklistoffset*/0,/*tp_iter*/0,/*tp_iternext*/0,/*tp_methods*/0,/*tp_members*/0,/*tp_getset*/0,/*tp_base*/0,/*tp_dict*/0,/*tp_descr_get*/0,/*tp_descr_set*/0,/*tp_dictoffset*/0,/*tp_init*/0,/*tp_alloc*/myobj_new,/*tp_new*/};

THE END
1.干货分享:可以免费问答的几个GPT网站ChatGPT一个基于人工智能技术的虚拟助手,旨在为用户提供信息、解答问题和协助完成各种任务。我能够处理多种主题,包括但不限于科学、技术、文化、历史等领域。我的目标是为您提供准确、及时的帮助,以提升您的工作和生活效率这个,可免费使用GPT-3.5和GPT-4.0模型~ https://blog.csdn.net/2401_88365613/article/details/144431715
2.ВведениеВведениеЗавершено 100 XP 3мин Microsoft Intune предоставляетнесколькоразличныхвариантовсозданияипросмотраотчетов. Microsoft Configuration Manager и Intune предоставляютвhttps://learn.microsoft.com/kk-kz/training/modules/inventory-complinace-reports/1-introduction
3.51CTO学堂每周一课关东升,作家,51CTO学堂高级讲师,微软MCP(微软认证开发工程师)、全国移动终端讲师等。18年教学经验:教授近万名学员,近期为中国移动、中国联通、南方航空、中石油、工商银行、平安银行和天津港务局等企事业单位授课。26年项目经验:参与设计和开发北京市公交一卡通百亿级大型项目;发国家农https://mp.weixin.qq.com/s?__biz=MzAwMTc2MzQzNA==&mid=2247501629&idx=1&sn=a675059e219bf2dc57e33c4349211336&chksm=9bc12df348046b8d4b03090c070ae8312b4791cf0ea814929dd8fde091ea91984a2f08219c09&scene=27
4.totypes八维官网二、功能设计除了基本的在线学习、教育资源共享、课程订购与管理外,Totypes八维官网还有许多其他的实用功能。比如随时更新的就业信息,为学生提供了一个全面了解应聘市场的窗口。还有趣味互动的社区活动,促进了学生之间的交流和合作。此外,还包括名师团队展示、大咖分享、免费试听等众多精彩节目等,全方位满足https://zhidao.baidu.com/question/403294367323572205.html
5.发现了一个新的荣格八维测试网站totypes好怪 用这个做是infj 用16personalities是infp 荣格八维是infp…… 赞(7) 回应 onism 2023-05-08 22:04:57 河南 bb最上面的八维看起来更像enfp?(阳面功能是ne fi te si) 至于测试的准确度,好像最新的这个totypes效度不错,我看关注的mbti认证测评师up主推荐过。不过测试的结果不一样也可能是测试的时间https://m.douban.com/group/topic/288130978/
6.PersonalityTypes16PersonalitiesExtensive, research-backed profiles of 16 personality types: learn how different personalities approach romantic relationships, career choices, friendships, parenthood, and more.https://www.16personalities.com/personality-types
7.为什么totypes测试准确度高totypes准确度来自勤奋文研的凡深totypes准确度高,是因为它结合了mbti官方的迫选题(二分法)跟十六人格官网的程度题一起原创设计的题目①mbti官方用迫选题测试,是为了告诉大家我们的注意力不可能同时去往一个地方(就像你不能同时出现在两个不同时空),保持了心理对立性,但是缺点是,遇到选不出来的题目你没法跳过去,何况很多孩子对自己也不清楚分不https://weibo.com/7235855003/OyvOz1DPa
8.Totypes荣格八维解读师初级认证考试Si记忆和荣格八维功能无关SeTe/Fe MBTI中,面对法律的公正性 F一定同情心泛滥T一定客观公正F/T只是反应认知偏好,这两个维度的人在结果上可能得出一样的思考,也有可能完全不同只有直觉型人才能看得到法律的公正性 答案:C 第一章 判断题 MBTI是基于荣格的心理类型理论发展而来的。 (正确)荣格提出了八种心理功能和https://www.wjx.cn/xz/281175177.aspx
9.PersonalityJunkie–INFJ,INTP,INTJ,INFPTypes&MoreClarifying your personality, relationships, career direction, and paths to growth through the lens of type.https://personalityjunkie.com/
10.荣格八维测试导语:MBTI分类理论起源于荣格的八维人格分类学说。也许一切回归原汁原味的理论本源,能更清晰看清楚自己。学术界争议的迈尔斯母女增加的JP维度是有力补充还是画mindset, are willing to try new things, accept different perspectives and cultures, and are able to establish connections with various types of https://www.apesk.com/mbti2/rongge/