摘要: 一、知识储备 1、__call__方法 实例化时传参 元类内部也应该有一个__call__方法,会在调用Foo时触发执行 Foo(1, 2, x=1)相当于 Foo.__call__(Foo,1,2,x=1) 可以看出,Chinese类实例化会触发它的父类的__call__方法, 我们先看一下__c 阅读全文
posted @ 2018-03-27 22:51 xudachen 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 一般定义方法: 把metaclass元类换成自己定义的类Mymeta 对Mymeta进行定义: 在Mymeta中可以设置控制条件,对生成的类进行控制,如: 对注释进行控制: 如果没有注释或者注释为空,就会报错,报错为: 加上注释就不会报错了。 阅读全文
posted @ 2018-03-27 22:17 xudachen 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 一、储备知识exec 参数1:字符串形式的命令 参数2:全局作用域(字典形式),如果不指定默认就使用globals() 参数3:局部作用域(字典形式),如果不指定默认使用locals() 示例代码如下: l为局部变量,执行后会增加z的键值对,g为全局变量,x的值会修改为10,m不存在,会添加进g p 阅读全文
posted @ 2018-03-27 21:02 xudachen 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 一、__str__方法 示例代码: 实例化不会触发__str__方法,但是打印的话就会触发,如下: 执行了,但是TypeError,我们return一个字符串就可以了,如: 二、__del__方法 实例代码如下: 定义一个Open类,模仿文件打开操作, 可以看出,实例化触发了 __del__方法, 阅读全文
posted @ 2018-03-27 20:10 xudachen 阅读(1909) 评论(0) 推荐(0) 编辑