Python的元类简单介绍
* 类型 和类
在Python中,一切都是对象。类也是对象。所以一个类必须有一个类型
注意:
1.type Python3中所有的类都是通过type来创建出来的
2.object:Python3中所有类的顶级父类都是object
# 使用type创建类
"""
1.第一个参数是类的名字 str 类型
2.第二个参数是继承的父类 tuple 类型
3.第三个参数类定义的属性,跟方法名 dict 类型
"""
# 创建方法,放到第三个参数里面就可以,调用
def func(self):
print("你好")
Test = type("Test", (object,), {"name": "张三","func":func})
自定义元类
1.自定义元类必须继承于type
2.type创建类:三个参数
"""
1.第一个参数是类的名字 str 类型
2.第二个参数是继承的父类 tuple 类型
3.第三个参数类定义的属性,跟方法名 dict 类型
"""
例子:
# 自定义元类
class MyMetaClass(type):
def __new__(cls, name, bases, namespace, *args, **kwargs):
return super().__new__(cls, name, bases, namespace)
# 通过自定义元类来创建类
class Test(metaclass=MyMetaClass):
name = "张三"
# 父类指定元类,子类可以继承父类所指定的元类
class MyClass(Test):
pass
t = Test()
print(type(Test))
结果:<class '__main__.MyMetaClass'>
print(Test.__dict__)
Python的元类简单介绍的更多相关文章
- Python自定义线程类简单示例
Python自定义线程类简单示例 这篇文章主要介绍了Python自定义线程类,结合简单实例形式分析Python线程的定义与调用相关操作技巧,需要的朋友可以参考下.具体如下: 一. 代码 # - ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- oc-12-NSString 类简单介绍及用法
// 11-[掌握]NSString 类简单介绍及用法 #import <Foundation/Foundation.h> int main(int argc, const char * ...
- python 通过元类控制类的创建
一.python中如何创建类? 1. 直接定义类 class A: a = 'a' 2. 通过type对象创建 在python中一切都是对象 在上面这张图中,A是我们平常在python中写的类,它可以 ...
- Tstrings类简单介绍及实例
用TStrings保存文件;var S: TStrings;begin S := TStringList.Create(); { ... } S.SaveToFile('config.txt' ...
- Python 的元类设计起源自哪里?
一个元老级的 Python 核心开发者曾建议我们( 点击阅读),应该广泛学习其它编程语言的优秀特性,从而提升 Python 在相关领域的能力.在关于元编程方面,他的建议是学习 Hy 和 Ruby.但是 ...
- python爬虫:爬虫的简单介绍及requests模块的简单使用
python爬虫:爬虫的简单介绍及requests模块的简单使用 一点点的建议: (学习爬虫前建议先去了解一下前端的知识,不要求很熟悉,差不多入门即可学习爬虫,如果有不了解的,我也会补充个一些小知识. ...
- python中元类(metaclass)的理解
原文地址:http://www.cnblogs.com/tkqasn/p/6524879.html 一:类也是对象 类就是一组用来描述如何生成一个对象的代码. 类也是一个对象,只要你使用关键字clas ...
- Python的元类
1.用元类验证子类 每当我们定义新类的时候,元类就会运行雅正代码,以确保这个新类符合规定的规范. Python系统把子类的class语句处理完毕,就会调用元类的 __new__ 方法.元类可以通过 _ ...
随机推荐
- LNMP环境搭建之php安装
和LAMP安装PHP方法有差别,需要开启php-fpm服务 下载php cd /usr/local/src/ wget http://cn2.php.net/distributions/php-5.6 ...
- Tomcat 8 Host-Manager配置访问的方法,全网唯一正确配置
2019独角兽企业重金招聘Python工程师标准>>> 环境: 操作系统: Linux version 2.6.32-696.10.1.el6.x86_64 (moc ...
- apache调优技巧之一隐藏apahce版本信息
如果你的服务器版本信息是这样的,是很 危险的. [root@xinsz63 httpd-2.2.27]# curl -I 192.168.1.38 HTTP/1.1 403 Forbidden Dat ...
- 图论--Floyd总结
Key word: ①最短路 ②传递闭包:大小关系 数值关系 先后关系 联通关系 ③floyd变形 ④实现方式:插点发法 ⑤思想:动态规划 1.最短路: 最短路 ...
- linux下编译boost的多线程程序
linux下面用boost库进行多线程编程,一开始总是编译不成功,花了好多的时间. 下面是一段小示例代码: //start from the very beginning,and to create ...
- andorid jar/库源码解析之Dagger/Dagger2
目录:andorid jar/库源码解析 Dagger.Dagger2: 作用: 1.用于解耦Activity和业务逻辑 2.在使用业务的时候,不需要重复编写new代码. 3.当业务变化的时候,不需要 ...
- idea撤销快捷键
Ctrl+z:撤销. Ctrl+shift+z:取消撤销.
- 【Scala】Actor并发编程实现单机版wordCount
文章目录 对单个文本文件进行单词计数 对多个文本文件进行单词计数 对单个文本文件进行单词计数 import scala.actors.Actor import scala.io.Source //读取 ...
- 字节码编程,Byte-buddy篇一《基于Byte Buddy语法创建的第一个HelloWorld》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 相对于小傅哥之前编写的字节码编程: ASM.Javassist 系列,Byte Bu ...
- FPGA学习心得汇总(手中写代码,心中有电路)
http://bbs.ednchina.com/BLOG_ARTICLE_2111172.HTM 任何的时序逻辑都可以转换为组合逻辑+D触发器来完成. FPGA内部主要三块:可编程的逻辑单元.可编程的 ...