企业网站优化三层含义网站平台建设目标
web/
2025/9/27 7:34:40/
文章来源:
企业网站优化三层含义,网站平台建设目标,小说cms系统,怎么样才可以在百度上打广告元类就是类的类#xff0c;type就是Python中创建所有类的元类。type就是创建类对象的类。Python中所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象#xff0c;并且它们都是从一个类创建来#xff0c;这个类就是type。# class Foo(object):# …元类就是类的类type就是Python中创建所有类的元类。type就是创建类对象的类。Python中所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象并且它们都是从一个类创建来这个类就是type。# class Foo(object):# a 100# # 对于上面声明类的代码实际上是由type帮助我们创建了类具体可以理解为下面的过程## # type(类名 基类/父类元祖 方法与类属性 字典) —— 返回创建出来的类# # Foo type(Foo, (object,), {a: 100})## obj Foo()####################### 使用type创建类# 对象方法def obj_fun(self):print(obj_fun)# 类方法classmethoddef class_fun(cls):print(class_fun called)# 静态方法staticmethoddef static_fun():print(static fun called)# 通过type创建一个类然后找了一个变量bar来接收bar type(Foo, (object,), {a: 100, o_fun: obj_fun, c_fun: class_fun, s_fun: static_fun})# print(bar.__name__)obj bar()obj.o_fun()# print(type(obj))## print(bar.a)bar.c_fun()bar.s_fun()# 用函数的语法自己定义了一个元类 upper_meta_classdef upper_meta_class(class_name, class_bases, class_attrs):自己定义的元类# class_name 用来接收类名 字符串# class_bases 用来接收基类 元祖# class_attrs 用来接收属性 字典 {a:100, b: 200}new_class_attrs {}# 通过循环遍历class_attrs 调整里面的键值对放到new_class_attrsfor key, value in class_attrs.items():new_class_attrs[key.upper()] value# new_class_attrs {A: 100, B: 200}return type(class_name, class_bases, new_class_attrs)# 使用元类的方法class Foo(object, metaclassupper_meta_class):a 100b 200# Foo upper_meta_class(Foo, (object,), {a:100, b: 200})# print(Foo.a)print(Foo.A)class upper_meta_class(type):自定义元类def __new__(cls, class_name, class_bases, class_attrs):决定了对象的真实构造过程对象是由new方法创造出来的new_class_attrs {}# 通过循环遍历class_attrs 调整里面的键值对放到new_class_attrsfor key, value in class_attrs.items():new_class_attrs[key.upper()] value# new_class_attrs {A: 100, B: 200}# return type(class_name, class_bases, new_class_attrs)# 子类中调用父类的三种方法#1. return type.__new__(cls, class_name, class_bases, new_class_attrs)#2. return super().__new__(cls, class_name, class_bases, new_class_attrs)3. return super(upper_meta_class, cls).__new__(cls, class_name, class_bases, new_class_attrs)# def __init__(self, class_name, class_bases, class_attrs):# 初始化方法对象已经存在只是为对象进行属性设置# python3 使用元类的方法class Foo(object, metaclassupper_meta_class):a 100b 200## # python2 使用元类的方法# class Foo(object):# ___metaclass__ upper_meta_class# a 100# b 200# Foo upper_meta_class(Foo, (object,), {a:100, b: 200})# print(Foo.a)print(Foo.A)就是这样除此之外关于元类真的没有别的可说的了。但就元类本身它们其实是很简单的拦截类的创建 修改类 返回修改之后的类究竟为什么要使用元类
“元类就是深度的魔法99%用户根本不必为此操⼼。如果你想搞清楚究竟是否需要用到元类那么你就不需要它。 ——Python界的领袖 Tim Peters
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81008.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!