iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中的元类
  • 818
分享到

python中的元类

python 2023-01-30 22:01:01 818人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录 元类 什么是元类 自定义元类 其他 元类 什么是元类 我们创建一个类目的是为了

目录

  • 元类
    • 什么是元类
    • 自定义元类
    • 其他

元类

什么是元类

我们创建一个类目的是为了创建该类的实例对象,而元类就是用来创建类的。换个理解方式就是,元类就是创建类的类。

python中可以使用type函数创建一个类,参考
Python中type的用法
,用法如下:

tpye(name, bases, dict)

  • name 类名
  • bases 父类的元组
  • dict 类的属性方法和值组成的键值对

实际上 type() 函数就是一个元类,是python默认用来创建所有类的元类。

类似于 str 是创建字符串对象的类,int 是创建整形对象的类, type 就是用来创建类对象的类。可以通过 __class__属性来查看对象是由谁创建的:

>>> age = 10
>>> print(age.__class__)
<class 'int'>         
>>> name = "zhangsan"
>>> print(name.__class__)
<class 'str'>
>>> def foo():
...     pass
...
>>> print(foo.__class__)
<class 'function'>

可以看出所有对象都是由类创建的,这些类又是谁创建的?可以打印下__class____class__ 属性:

>>> print(age.__class__.__class__)
<class 'type'>
>>> print(name.__class__.__class__)
<class 'type'>
>>> print(foo.__class__.__class__)
<class 'type'>

可以得出所有类都是通过 type 类创建的, 而type就是python自带的元类。

自定义元类

创建自定义元类之前,需要先了解一个属性,__metaclass__ 属性,了解 __metaclass__之前需要先了解python类的创建流程...

__metaclass__ 属性用来指定当前类的元类,所以我们可以指定 __metaclass__ 属性的值,来自定义元类。自定义元类可以是一个类也可以是一个函数,他只需要像 type 函数一样,接收 name, bases, dict三个参数,并在处理完毕之后调用 type函数,并返回 type 函数创建好的类对象即可。

使用方法:

python2:

class Foo(object):
    # 设置Foo类的元类为add_property
    __metaclass__ = add_property

python3:

# 设置Foo类的元类为add_property
class Foo(metaclass=add_property):
    pass

使用函数创建元类

使用自定义元类给类增加属性:

def add_property(name, bases, dict):
    """给类增加属性"""
    age = 18
    name = "zhangsan"

    def say(self):
        print(age)
        print(name)

    dict = {"age": age, "name":name, "say": say}

    return type(name, bases, dict)


# 设置User类的元类为add_property
class User(metaclass=add_property):
    pass


user = User()
user.say()

运行结果:

18
zhangsan

使用类创建元类

使用自定义元类给类增加属性:

class Add_property:
    def __new__(self, name, bases, dict):
        """给类增加属性"""
        age = 18
        name = "zhangsan"

        def say(self):
            print(age)
            print(name)

        dict = {"age": age, "name":name, "say": say}

        return type(name, bases, dict)


# 设置User类的元类为Add_property
class User(metaclass=Add_property):
    pass


user = User()
print(user.age)
user.say()

运行结果:

18
zhangsan

其他

  • 元类是可以继承自父类的,多继承情况下,以最后一个作为元类。
  • 一般来说,我们根本就用不上元类(嘻嘻)。

--结束END--

本文标题: python中的元类

本文链接: https://www.lsjlt.com/news/179987.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中的元类
    目录 元类 什么是元类 自定义元类 其他 元类 什么是元类 我们创建一个类目的是为了...
    99+
    2023-01-30
    python
  • 什么是python中的元类
    所属网站分类: python高级 > 面向对象 作者:goodbody 原文链接: http://www.pythonheidong.com/blog/article/11/ 来源:python黑洞网 www.pythonh...
    99+
    2023-01-31
    python
  • python中的元类metaclass详情
    目录动机从一个问题引出 MetaClassMetaclass 编程动机 python语言因为工作偏向于 AI ,所以对于这门语言还停留在表面,对于 python 深层并没有接触到。 ...
    99+
    2024-04-02
  • python中的type,元类,类,对象用法
    目录type,元类,类,对象简单描述类的生成方式元类元类type学习总结type的作用是干什么呢?type,元类,类,对象 简单描述 1.type是python内建元类,新建的元类需...
    99+
    2024-04-02
  • Python数据类型中的元组Tuple
    目录一、定义二、合并、重复与删除三、元组转换四、元组中的方法一、定义 元组可以理解为一个只读列表,用()来标识。 定义一个空元组变量 = () 但是如果元组中只有一个元素时,是元组还...
    99+
    2024-04-02
  •  python中的元类metaclass怎么使用
    今天小编给大家分享一下 python中的元类metaclass怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-06-30
  • Python之元类ORM
    什么是元类在Python中一切皆对象,类也是一个对象,实例对象由类创建出来的,类是由元类创建出来的。简而言之,用来创建类的类就叫元类(metaclass)。 函数type其实就是一个元类,type就是Python在背后用来创建所有类的元类...
    99+
    2023-01-31
    Python ORM
  • Python中type的使用和元类的理解
            “元类就是深度的魔法,99%的用户应该根本不必为此操心。如果你想搞清楚究竟是否需要用到元类,那么你就不需要它。那些实际用到元类的人都非常清楚地知道他们需要做什么,而且根本不需要解释为什么要用元类。”            ...
    99+
    2023-01-31
    Python type
  • 如何在Python中使用元类
    如何在Python中使用元类?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是...
    99+
    2023-06-14
  • 深入理解Python的元类
    目录什么是元类type元类动态创建类自定义元类总结什么是元类 Python中,一切皆对象,我们定义的数字、字符串、函数、列表等都是对象,对象是类(class)的是实例,而类(clas...
    99+
    2024-04-02
  • 怎么理解Python的元类
    本篇内容介绍了“怎么理解Python的元类”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是元类Python中,一切皆对象,我们定义的数字...
    99+
    2023-06-21
  • python列表中的元素类型有哪些
    Python列表中的元素类型可以是任何类型,包括但不限于以下类型: 数字类型:整数(int)、浮点数(float)、复数(comp...
    99+
    2024-02-29
    python
  • python 通过元类控制类的创建
    一、python中如何创建类? 1. 直接定义类 class A:   a = 'a'   2. 通过type对象创建 在python中一切都是对象 在上面这张图中,A是我们平常在python中写的类,它可以创建一个对象a。其实...
    99+
    2023-01-31
    python
  • 怎么在Python中自定义元类
    这期内容当中小编将会给大家带来有关怎么在Python中自定义元类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、lon...
    99+
    2023-06-14
  • Python 5.5 使用元类
    使用元类type()动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时创建的,而是运行时动态创建的。比方说我们定义一个Hello的class,就写一个hello.py模块:class Hello(object):    def h...
    99+
    2023-01-31
    Python
  • 由ORM谈Python元类
    本文主要介绍了什么是类,如何动态的创建类,什么是元类,类的_metaclass_属性以及如何自己实现ORM。在谈Python元类之前,我们先来看看ORM是什么:ORM 为Object Relational Mapping 的简称,中文意思为...
    99+
    2023-06-02
  • Python黑魔法:元类
    Python黑魔法:元类 术语“元编程”指的是程序具有编写或操纵其自身作为它们资料的潜力。Python支持称为元类的类的元编程。 元类是一个深奥的面向对象编程(OOP)概念,隐藏在几乎所有的Python代码之后。无论你是否意识到它的存在,你...
    99+
    2023-01-31
    黑魔法 Python
  • python 使用元类type创建类
    目录1、type动态创建类 1.1 语法格式1.2 案例1:使用type创建类1.3 案例2:使用type创建带有属性(方法)的类1.4 案例3:使用type动态创建一个继...
    99+
    2024-04-02
  • Python基本数据类型中元组的用法
    本篇文章为大家展示了Python基本数据类型中元组的用法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.元组的概念python中的元组是有序元素组成的集合,与列表的区别在于,元组是不可变的,一旦定...
    99+
    2023-06-02
  • Python元类是怎么创建一个类的
    本篇内容介绍了“Python元类是怎么创建一个类的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如果你看过比较优秀的 Python 开源框架...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作