Python 元类模型和类语句协议

小夏 科技 更新 2024-01-30

学习 Python 的类型模型和类语句协议。 class 语句在末尾自动调用 type() 以创建类对象并分配类名。

python3.在 x 中,用户定义的类对象是名为 type 的对象的实例,而 type 本身就是一个类;

python2.x,现代类继承自对象,对象是类型的子类;传统类是类型的实例;

type() 内置函数返回任何对象的类型。

顶级类型对象创建特定类型,特定类型创建实例。

>> type( list 类创建列表实例(创建实例的特定类)。

> type(type( type class creates list class (type class creates concrete class).

>type(list)

>type(type)

type 是一个内置对象,位于类型层次结构的顶部,用于生成类型。

>>type(

>type(type(

>type(list)

>type(type)

(1)类型由派生自类型的类定义;

2)用户定义类是类型类的实例;

3) 用户定义的类是生成自己的实例的类型。

>>class c1:pass

>type(c1)

>type(c1())

类是类型类的实例,也是从中生成类的实例对象。

obj.class 返回 obj 所属的类,可以是实例对象,也可以是类对象。

python3.x

>>class c:pass

>c1=c()

>type(c1)

>c1.__class__

>type(c)

>c.__class__

>c1

_main__.c object at 0x00000288f3360a90>

>c

python2.x 现代类。

>>class c(object):pass

>c1=c()

>type(c1)

>type(c)

>c1.__class__

>c.__class__

>c1

_main__.c object at 0x0000000003f70408>

>c

python2.x 传统类。

>>class c:pass

>c1=c()

>type(c1)

>type(c)

>c1.__class__

>c.__class__

traceback (most recent call last):

file "", line 1, in

c.__class__

attributeerror: class c has no attribute '__class__'

python3.x,则该类是类型类的实例。

1)type是生成用户定义类的类;

2)元类是类型类的子类;

3)类对象是类或子类类型的实例;

4) 实例对象是从类生成的。

用户定义类创建用户定义元类的子类(而不是类型类),以控制类的创建方式及其行为的扩展方式。

对类型类进行子分类以对其进行自定义。 将类的创建指向元类,而不是默认类型。

了解类语句如何完成工作。

在 class 语句的末尾,会自动执行 type() 方法以创建类对象并为类名赋值。

class = type(classname,superclasses,attributedict)

type 对象定义了 call operator 重载方法,调用 type 对象时,执行以下两种方法:

1) type.__new__(typeclass,classname,superclasses,attributedict)

2) type.__init__(class,classname,superclasses,attributedict)

new 方法创建并返回一个新的类对象,init 方法初始化新创建的对象。

type 的元类 子类的自定义类型的钩子。

>>class a:pass

>class b(a):

name='梯形图读取线'

def meth(self,arg):

pass class 语句自动调用语句末尾的 type() 来生成类对象。

b=type('b',(a,),

用法:

name=type(name, bases, dict) -a new type
描述:手动调用类型调用以创建类对象。

name: 字符串,类名;

bases:元组,用于保存基类;

dict: 类属性字典;

返回值:创建一个名称名称和类型类型的类对象。

base 获取由该类的直接超类组成的元组,参考 Python 命名空间字典

>>>class classb: name='梯形图读取线'>> ClassB 自动调用 type() 来创建类对象并为 ClassB 赋值 >>Type(ClassB) 类对象类型为类型类型 >>Type(ClassB()) 实例对象类型为 ClassB 类类型>>ClassB基基类是 object (, classbName 类属性'梯形图读取线'
等效

>>>classb=type('classb',(object,),classb >>type(classb) >type(classb())classb.__bases__ classb.name '梯形图读取线'

相似文章

    Python 将索引方法添加到类中

    在本文中,我们将向您展示如何在 Python 中向类添加索引方法。我们将使用一种特殊的魔术方法来索引一个类,我们将提供详细的示例。本文将重点介绍 Python 中的 getitem 方法,通过该方法可以实现类的索引功能。.了解索引方法的作用。索引是一种常见的操作,它允许我们以某种方式获取类或对象中的...

    python爬虫可以获取哪些类型的数据?

    Python 爬虫可用于获取多种类型的数据,具体取决于您的需求和目标。以下是 python 爬虫可以检索的一些常见数据类型 .文本数据 获取网页上的文本内容,包括新闻文章 博客文章 评论等。.图像数据 从网页抓取,可用于构建图像数据集或获取特定于主题的数据。.数据 获取网站上的内容,这些内容可用于构...

    借助 Google Duet AI,您可以轻松深入了解聚类模型并实现可视化

    云王牌云一它是谷歌云的全球战略合作伙伴,在亚太 欧洲 美洲和非洲设有 多个办事处。Cloud Ace 目前在 Google Expertise 和 Expertise 方面排名全球第一,并连续多次获得 Google Cloud 奖项。作为 Google Cloud 托管服务提供商,我们提供 谷歌云谷...

    早安元宇宙 AI 作为老师?大模式引领教育革命

    近日,国际知名期刊 自然 科普专栏发表了一篇关于大型语言模型对教育的转型与影响的文章。上海智能教育研究院研发的教育对话大模型 教育聊天 成为代表性案例。未来,AI模型将对教育领域产生哪些影响?本期,我们就和研究所一起探讨一下吧。在本周的元宇宙政策方面,近日,浙江省印发了虚拟现实与产业应用融合发展五年...

    元学习习用于提高模型在小样本任务上的泛化能力

    在机器习领域,模型在小样本任务上的泛化能力一直是一个挑战。传统的机器习方法通常需要大量的标记数据来训练模型,但在现实世界中,许多任务只有少量的标记数据可用。为了解决这个问题,研究人员提出了一种元学习习方法,该方法使模型能够通过在多个小样本任务上学习习来快速适应新任务,并在小样本任务上表现出更好的泛化...