Python 声明和自定义构建初始化基元类

小夏 科技 更新 2024-01-31

重写 new ( 方法以定义最简单的元类。

最简单的元类是具有新方法的类型的子类,该方法通过运行默认版本的类型来创建类对象。

用法:

定义。 

class mymeta(type):

def __new__(meta,classname,supers,classdict):

return type.__new__(meta,classname,supers,classdict)

用。 class classb(classa,metaclass=mymeta):

描述:要定义基元类,只需定义一个类,继承类型,并重载新的 (方法。

使用时,使用关键字元类参数 metaclass 将元类传递给用户类。

>>class mymeta(type):

def __new__(meta,classname,supers,classdict):

print('调用 mymeta__new__:','meta: %s' % meta,'classname: %s' % classname,'supers: %s' % supers,'classdict: %s' % classdict,sep='')

return type.__new__(meta,classname,supers,classdict)

>class classa:pass

>class classb(classa,metaclass=mymeta):

name='梯形图读取线'

def meth(self,arg):

传递调用 mymeta__new__:

meta:

classname: classb

supers:

classdict:

mymeta 类。

>type(classb)

类型类。

>type(classa)

通过重载类型类new() 方法和init() 方法自定义元类的构造和初始化。

用法:

class mymeta(type):

def __new__(meta,classname,supers,classdict):

passreturn type.__new__(meta,classname,supers,classdict)

def __init__(class,classname,supers,classdict):

pass

描述:定义一个继承自 type 的类,并重载 new ( 和 init ( 方法,这些方法由类型对象的调用 ( 调用。

1) new(创建并返回一个类对象;

2) init(初始化类对象。

>>class mymeta(type):

def __new__(meta,classname,supers,classdict):

print('调用 mymeta__new__:','meta: %s' % meta,'classname: %s' % classname,'supers: %s' % supers,'classdict: %s' % classdict,sep='')

return type.__new__(meta,classname,supers,classdict)

def __init__(class,classname,supers,classdict):

print('调用 mymeta__init__:','class: %s' % class,'classname: %s' % classname,'supers: %s' % supers,'classdict: %s' % classdict,sep='')

print('初始化类对象:',list(class.__dict__.keys())

>class classa:pass

>class classb(classa,metaclass=mymeta):

name='梯形图读取线'

def meth(self,arg):

传递调用 mymeta__new__:

meta:

classname: classb

supers:

classdict:

调用 mymeta__init__:

class:

classname: classb

supers:

classdict:

初始化类对象:'__module__', 'name', 'meth', '__doc__']

>cb=classb()

>cb.name

梯形图读取线'

相似文章

    Python 中 CHR 和 ORD 函数的用法

    Python 是一种广泛使用的高级编程语言,它提供了许多内置函数来帮助开发人员执行各种任务。其中,chr 和 ord 是两个非常常用的字符串处理函数。ord 函数是将单个字符转换为整数 ASCII 代码 的函数,而 CHR 函数则相反,将整数 ASCII 代码 转换为相应的字符。以下是使用这两个函数...

    JAVA和Python的就业前景

    在当今瞬息万变的技术世界中,编程语言的重要性怎么强调都不为过。J a 和 Python 是两种流行的编程语言,在软件开发 数据分析 人工智能和许多其他领域都有广泛的应用。对于希望转行从事技术工作的计算机科学专业学生和专业人士来说,选择习学习哪种语言以改善就业前景是一个重要的决定。在这篇文章中,我们将...

    Python 元类模型和类语句协议

    学习 Python 的类型模型和类语句协议。class 语句在末尾自动调用 type 以创建类对象并分配类名。python.在 x 中,用户定义的类对象是名为 type 的对象的实例,而 type 本身就是一个类 python.x,现代类继承自对象,对象是类型的子类 传统类是类型的实例 type 内...

    钢结构漆和防锈漆的区别

    钢结构漆和防锈漆都是用于保护金属结构的涂料,但它们的功能和特点不同。钢筋漆是专门用于钢结构建筑的涂料,具有优良的附着力 耐候性和耐腐蚀性。钢筋漆可以提供长期的保护,使钢结构建筑具有良好的耐久性和美观性。钢漆通常分为底漆 中间漆 面漆等,可以形成硬质涂层,有效防止钢材生锈和腐蚀。防锈漆是一种用于防止金...

    Python 与 Java 是初学者和企业应用程序的选择

    Python 和 J A 是两种流行的编程语言,每种语言都有自己的优势和特点。下面我们将从几个方面对这两种语言进行比较,以帮助您更好地了解它们的区别。.语法 Python 的语法简洁 易读 易写,支持过程式 面向对象式 函数式编程等多种编程范式。这使得 Python 非常适合初学者,并广泛用于数据科...