`

python的类,元类

 
阅读更多
类实例化过程:
例子:  class Custom:
def __init__(self):
print("Init method")

def __new__(cls,*args,**kwargs):
print("new Instance")
return object.__new__(cls,*args,**kwargs)
if __name__ == '__main__':
Custom()
运行结果:
new Instance
Init method

类也是一个对象,但是具有创建其自身实例的能力。
类可以和一个变量进行绑定
可以为类增加属性
可以将类作为函数的参数传递

==============================================
元类(type)
类的创建和管理者
所有的类都是元类(type)的实例
元类实例化的过程:
__new__()
__init__()
目的:对其创建的类进行预处理

Python3.x中对元类的应用
类继承中提供关键字参数:metaclass=元类名
Python3.x中对元类的应用
定义一个模块级变量: __metaclass__=元类名
为某个类添加类属性: __metaclass__=元类名

自定义元类(Python3中)
例子: class MyMeta(type):
def __init__(self,name,bases,dicts):
print("init method")

def __new__(cls,name,bases,dicts):
#给元类添加一个方法
dicts['info'] = lambda self:print('Djx')
#创建实例对象
res = type.__new__(cls,name,bases,dicts)
#给元类添加一个属性
res.company = 'Maizi'
return res

#Python3.x中对元类的应用
class custom(metaclass=MyMeta):
pass

#Python2.x中对元类的应用
class cust:
__metaclass__ = MyMeta
pass
#一个模块级变量
#__metaclass__ = MyMeta

if __name__ == '__main__':
cus = custom()
cus.info()
print(cus.company)
运行结果:
init method
Djx
Maizi

构造序列类
实现以下方法:
__len__(self)
__getitem__(self,key)
__setitem__(self,key,value)
__delitem__(self,key)

构造迭代器iter
实现以下方法:
__iter__(self)
__next__(self)

构造可比较类
实现以下方法:
__lt__()
__le__()
__gt__()
__ge__()
__eq__()
__ne__()

构造可运算类
实现以下方法:
__add__()
__sub__()
__mul__()
__div__()

分享到:
评论

相关推荐

    Python的元类编程研究

    ### Python的元类编程研究 #### 概述 Python作为一种高级、通用的编程语言,以其简洁易读的语法和强大的功能赢得了广泛的认可。它不仅适用于Web开发、数据分析、人工智能等多个领域,同时也支持多种编程范式,包括...

    第七章Python对象和类习题及答案--中文

    Python 对象和类习题及答案中文 在本节中,我们将学习 Python 中的对象和类,并通过习题和答案来巩固相关知识点。 定义对象的类 在 Python 中,类是定义对象的模板或蓝图。类是定义相同类型对象的模板,蓝图或...

    实验4 基于Python类的有向图时间、空间最短路径求解.docx

    "实验4 基于Python类的有向图时间、空间最短路径求解" 本实验要求学生使用组合数据类型表达有向图,编写路径类 Path 和有向图类 DirectedGraph,搜索出任意两点间的空间和时间最短路径,并将路径和最短路径上的费用...

    Python 类的说明

    根据提供的文件信息,我们可以从中提炼出关于Python类的多个关键知识点。下面将详细解释这些知识点,包括类变量、实例变量、方法类型(如实例方法、静态方法和类方法)以及继承等方面的内容。 ### 1. 类变量与实例...

    python利用元类和描述器实现ORM模型(csdn)————程序.pdf

    元类是创建类的类,即元类是用来生成 Python 类的“工厂”。Python 中的每个类都是由 `type` 这个元类创建的。元类可以用来定制类的行为,例如在创建类时进行额外的处理,如验证类属性、添加默认方法等。自定义元类...

    MQTT客户端(python封装的类)

    MQTT客户端(python封装的类),类的方法包括连接、订阅和发布。

    python C++包装类

    首先,我们需要理解什么是C++封装的Python类。这是一种技术手段,通过它,C++可以创建一个类,该类能够调用Python的函数、模块或者对象。这种封装通常利用Python的C API(Python的C语言接口)或者第三方库如Boost....

    python类和对象.pdf

    python类和对象

    Python面向对象之类和对象实例详解

    本文实例讲述了Python面向对象之类和对象。分享给大家供大家参考,具体如下: 类和对象(1) 对象是什么? 对象=属性(静态)+方法(动态); 属性一般是一个个变量;方法是一个个函数; #类的属性 就是 类变量 #...

    深入理解python元类

    Python元类是编程语言中的一个高级特性,它允许我们对类的行为进行定制,甚至改变类的创建方式。元类在Python中扮演着一种"类的类"的角色,它定义了如何构建和操作常规的类。元类的强大之处在于,它们可以用于实现...

    Python 类与元类的深度挖掘 I【经验】

    ### Python 类与元类的深度挖掘 I【经验】 #### super() 方法详解 在Python中,`super()` 方法是一个非常强大的工具,它可以帮助我们解决多继承带来的复杂性问题,尤其是在涉及类层次结构时。当我们需要从多个基类...

    Python中的元类编程入门指引

    Python中的元类编程是一种高级特性,它涉及到对类这一概念的元层次操作。元类(Metaclass)可以理解为创建类的类,就像类是创建对象的模板一样。元类在Python中扮演着一个特殊的角色,它使得我们能够在类定义阶段...

    从C++导出类到Python

    本教程将聚焦于如何从C++中导出类到Python,这样你就可以在Python环境中利用C++的强大性能和效率。这通常通过Python的C API或者第三方库如SWIG(Simplified Wrapper and Interface Generator)来实现。 **C++导出类...

    python有限元分析框架-《有限元分析基础教程》(曾攀)笔记一-二维杆单元有限元程序(基 .pdf

    《有限元分析基础教程》(曾攀)笔记一主要探讨了如何使用Python构建二维杆单元的有限元程序,相比书中基于Matlab的实现,作者采用了更简洁和面向对象的编程方式。以下是关于这个主题的详细解释: 有限元分析是一种...

    Python的元类编程研究.pdf

    根据提供的文件内容,以下是关于Python元类编程研究的知识点总结: 1. Python语言概述 Python是一种面向对象的解释性编程语言,具有高度的通用性,适用于多种操作系统平台。它以简洁清晰的语法特点著称,适合开发...

    两句话带你完全掌握Python最难知识点——元类!

    元类是Python编程中一个高级且复杂的概念,它在大多数初学者眼中可能显得有些晦涩难懂。然而,一旦理解了元类的工作原理,你就能更深入地掌握Python的精髓,甚至可以创建出更加灵活和定制化的类。下面,我们就通过两...

    Python的元类编程研究.zip

    - `type`: Python内置的元类,用于创建任何Python类。通过`type(name, bases, dict)`可以创建一个新的类,其中`name`是类名,`bases`是基类元组,`dict`是类字典,包含了类的方法和属性。 - `__metaclass__`: 类...

    python类基础_类模块_python_

    Python 类基础是 Python 编程中的核心概念,它是一种面向对象编程(OOP)的关键元素。在 Python 中,类是用来创建对象的蓝图,允许我们定义数据结构和对象的行为。类模块则是将相关的类组织在一起,形成一个可复用的...

    python类装饰器装饰方法通用编码模型分析.pdf

    python装饰器是一个用于封装函数、方法或类的代码的工具,用来显式指定管理它们的代码。一次编写,可用于多种不同的情况。在python 的流行框架中,装饰器应用越来越广泛。用类设计装饰器,可以利用实例属性保持装饰...

    python类DBUtils安装包

    DBUtils 是一套允许线程化 Python 程序可以安全和有效的访问数据库的模块。DBUtils已经作为 Webware for Python 一部分用来结合 PyGreSQL 访问 PostgreSQL 数据库,当然他也可以用在其他Python应用程序中来访问 DB-...

Global site tag (gtag.js) - Google Analytics