问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python 什么时候使用元类

发布网友 发布时间:2022-04-26 21:35

我来回答

3个回答

热心网友 时间:2022-05-10 05:05

class MyMeta(type):
def __init__(cls,name,bases,dic):
print cls.__name__
print name
def __str__(cls):return 'Beautiful class %s'%cls.__name__

这是个什么东西?哈,这是个元类。是个类的模板。

它要用在哪里?它要用在一个类里,作为这个类的模板。

起的什么作用?模板,就是提供一些共同的特征。

这个类提供了什么样的特征?两个特征,1。类定义后打印类的名字(__init__)。2。打印类的格式(__str__)。

到底回怎么工作,打开的你的解释器,输入以上的代码,上路:

输入:

class MyClass(object):
__metaclass__ = MyMeta

回车结束类的定义时,输出:
MyClass
MyClass

明白了吧,霍霍!事实证明它确实是初始化一个类,而不是一个对象!!!!!这个是第一个特征。

第二个:

输入:

print MyClass
输出:

Beautiful class MyClass

啊哈,恰如其分,如我们所预料的那样!!!!!!!!当然你可以任意个性化你的类!!

####################################################################################

下面我们来实现一个Singleton模式(来自啄木鸟社区):

Singleton元类:

复制代码 代码如下:

class Singleton(type):
def __init__(cls,name,bases,dic):
super(Singleton,cls).__init__(name,bases,dic)
cls.instance = None
def __call__(cls,*args,**kwargs):
if cls.instance is None:
cls.instance = super(Singleton,cls).__call__(*args,**kwargs)
return cls.instance

非常简单的一个设计模式,相信你能明白是怎么回事!

复制代码 代码如下:

class MyClass(object):
__metaclass__ = Singleton
def __init__(self,arg):
self.arg = arg

使用了Singleton元类的类。

是不是只能有一个实例呢??那只能看看了,邓爷爷说的好:实践是检验真理的唯一标准。——精华!!

复制代码 代码如下:

>>> my1 = MyClass("hello")
>>> my2 = MyClass("world")
>>> my1 is my2
True
>>> my1.arg
'hello'
>>> my2.arg
'hello'

我们创建my2的尝试失败了,而这恰恰证明我们成功了。

热心网友 时间:2022-05-10 06:23

类是创建实例的 而元类是创建类的
元类的主要作用 就是当创建类时 能够自动地改变类
比方说 在某一个模块里面 所有的类的属性都应该是大写
那么就可以在模块级别设定 __metaclass__
然后这个模块中的所有类都会通过这个元类来创建
只需要告诉这个元类 “把所有的属性都改成大写” 就 ok 了

热心网友 时间:2022-05-10 07:58

当你在类实例化时需要更改类的属性或行为时, 比如: 在类实例化时, 自动添加某个属性
python中的元类是什么,它们用于什么?

1、元类就是创建类的类,通过元类可以在创建类的时候动态地修改类,比如新增方法或属性,从而实现在具体类实例中使用这些方法或属性。2、类是与某个层[1]的对象的最具体的类型。类还可以有运行时表示形式(元对象),它为操作与类相关的元数据提供了运行时支持。支持类的编程语言在支持与类相关的各...

Python-元类及其应用场景

当我们定义一个类时,Python 解释器会先查找该类的元类,然后使用该元类来创建类的对象。元类定义了类的结构,包括类的属性、方法和其他元数据。在类创建过程中,元类会将这些信息存储在类的命名空间中,最终形成类的完整定义。1.单例模式 确保在整个应用程序中只有一个实例,后面文章会介绍 2.orm框...

python中的元类是什么,它们用于什么?

虽然在Python中你可以对元类使用任意可调用对象(例如Jerub演示),但是更好的方法是使其成为实际的类。type是Python中常见的元类。type它本身是一个类,并且是它自己的类型。你将无法type纯粹使用Python 重新创建类似的东西,但是Python有点作弊。要在Python中创建自己的元类,你实际上只想将其子类化type...

Python进阶——什么是元类?

想象一下,当我们定义一个类,其实是在创建一个特殊的对象——类。当我们调用类的构造方法时,实际上是由元类type在幕后操作。元类就是创建所有类的“模板”,用伪代码表示就是:`type(name, bases, dict)`。除了默认由type创建的类,我们还可以通过自定义元类(__metaclass__)实现更灵活的类创建...

Python进阶——详解元类,metaclass的原理和用法

元类可以看作是Python中的类的“类”,它允许我们自定义类的创建过程。与动态使用`type`创建类时相似,元类通过`__new__`方法实现,但形式上有所区别。我们通过一个例子来演示,创建了一个名为`AddInfo`的元类,它继承自`type`,并在`__new__`方法中处理类创建时的参数。当我们创建类`Test`...

Python元类基础知识深度解析

通过继承 type 类定义元类,关键在于实现 __new__ 方法。此方法接收类定义参数,生成类对象。举例说明:MyMeta 作为元类,添加 attr 属性于类 MyClass,实现动态属性赋值,展示了元类的强大。元类适用场景多样,如动态改变类行为、强制 API 一致性。使用时需谨慎,因其复杂性。元类是 Python 的强大...

请问一下什么是元类啊 ?它的具体作用是什么?谢谢您

所谓元类,在 Python(以及其它语言)中,类本身就是可以被传递和自省的对象。既然可以用类作为模板来生成对象,那么用什么作为模板来生成类呢?答案是元类(metaclass)。关于类工厂,不仅实例可以动态的创建,连类也可以动态地创建。元类的功能是强大的,需要考虑元类对于我们的实用性,而且掌握它是有...

关于Python 的经典入门书籍有哪些?

本书介绍了Python应用在各个领域中的一些使用技巧和方法,从最基本的字符、文件序列、字典和排序,到进阶的面向对象编程、数据库和数据持久化、 XML处理和Web编程,再到比较高级和抽象的描述符、装饰器、元类、迭代器和生成器,均有涉及。随着越来越多的人涌入Python开发行列,这在无形中抬高了入行门槛...

如何理解python的类与对象

那么Python里的类和其他的对象有什么区别?实例是对象,因为创建实例的是类.类是对象,创建类的是什么呢?Python给的答案就是元类.你可以通过type()函数来查看它的元类.(type(type)得到的是它自己)其实这个类和其他对象一样,所以我们就不惊讶它为什么有类方法,类变量了.....

Python基础简介

Python的特点和优势体现在其关键字的使用,如模块(文件中包含相关代码的逻辑单元),模块初始化时的__name__属性,以及包(组织模块层次结构的文件夹)。创建模块时,只需顶层定义元素,导入时会引入到当前作用域。在Python中,模块包含函数、类、变量等,通过import、from和as关键字进行导入,以避免命名...

python类怎么用 python怎么调用类 python怎么用 python为什么叫爬虫 python类的调用 python中eval函数作用 python类详解 python类中__CalI__ 在python中的类
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有人在宿舍安路由器吗 PF89式80毫米单兵火箭筒研制历史 我们的学校宿舍有电话插口。我们想装路由器几个人一起上网。要怎么弄... 昙花一现的解放军自研两截式火箭筒:70式62毫米反坦克火箭筒 近炸引信分类 安装SQL时,我进入了x86/setup文件夹后,执行setupsql.exe,提示却是:_百... 我爸左胸自发性气胸都引流八天了,怎么还没见好转,还有那么多泡泡,今 ... 73岁糖尿病患者 突然左脑出血 引流手术 和器官切除后17天了能 挣眼手 ... 索爱st18i2.3.3 之前用一键root过,现在好像把camera哪个自带的程序误删... st18i能用什么软件刷机 重庆市面积有多少平方公里 重庆市万州区的面积多大? 北京上海天津重庆面积有多大 重庆市有多少平方公里 重庆面积相当于多少个上海 重庆的面积有多大 重庆行政区域面积大小? QQ音乐播放器快速弹出来的键是哪几个? qq影音怎么加快语速? 重庆面积相当于哪个省? 重庆面积和人口是多少? qq音乐播放器怎么快进,除了拖动进度条,还有什么方法 微博发图如何不带水印! 微博客户端如何发图片不带水印 微博发图如何不带水印!!求带图!!! 有哪些传说中的国宝,如《和氏璧》《秦王照骨镜》等,越多越好。 求藏地密码 青囊尸衣 地狱的第十九层 茅山后裔 盗墓之王 大漠苍狼 其他非精不要 1115896752@qq.com 哪个牌子的手机好?? 有没有像茅山后裔那样的小说啊! 有什么好看的完结风水小说 为什么使用Python,Python应用场景? Python 主要应用场景,适用行业有哪些 如何理解python当中的元类 怎样做或者填充欧美复古风的手账? 考试没考好怎么办? 考试没考好心里很难受怎么办? 青禾纪是什么东西 梦到了偶像怎么回事啊? 考研的考试大纲都有几科? 好用的人事管理系统? 为什么我常常做梦梦到我自己最喜欢的明显偶像? 该怎么办? 如果做梦梦到偶像,代表了什么? 梦见自己偶像 这是第三次梦到了 有什么含意嘛? 预算有限,基础人事管理系统哪个好用,求推荐 如何处理考研政治大纲解析和十 怎样才能梦见自己的偶像? 有什么好的人事管理系统吗? 好用的hr人事管理系统有哪些? 谁了解.人事管理系统哪个好? 网站标题有什么作用?