元类会自动将你通常传给‘type’的参数作为自己的参数传入
2017-04-24 16:11
197 查看
元类会自动将你通常传给‘type’的参数作为自己的参数传入
运行结果如下:
def upper_attr(future_class_name, future_class_parents, future_class_attr): '''返回一个类对象,将属性都转为大写形式''' # 选择所有不以'__'开头的属性 attrs = ((name, value) for name, value in future_class_attr.items() if not name.startswith('__')) # 将它们转为大写形式 uppercase_attr = dict((name.upper(), value) for name, value in attrs) # 通过'type'来做类对象的创建 return type(future_class_name, future_class_parents, uppercase_attr) class Foo(object): __metaclass__ = upper_attr # 在这里定义__metaclass__,这样就只会作用于这个类中 bar = 'bip' print hasattr(Foo, 'bar') # 输出: False print hasattr(Foo, 'BAR') # 输出:True f = Foo() print f.BAR
运行结果如下:
Python 2.7.13 (default, Jan 12 2017, 17:59:37) [GCC 6.3.1 20161221 (Red Hat 6.3.1-1)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> False True bip >>>
相关文章推荐
- MS SQL Server 2008 新特性 - User-Defined Table Type 实现将.NET DataTable作为参数传入数据库
- 将一个二维数组intArray[nRow][nCol]作为参数传入上述函数
- STL之定义自己的判断式(predicate)作为算法的参数
- 关于ibatis如何传入数组作为参数
- jquery.get的参数中文自动编码与header(\'Content-type: text/html; charset=gbk\');乱码问题
- Oracle中把Array类型作为参数传入存储过程示例
- 在VBScript中实现-函数/方法名作为参数传入另一个函数
- .net 如何将datatable作为参数传入sql的存储过程
- Web Sql Database 操作类,将查询语句作为参数传入。
- Web Sql Database 操作类,将查询语句作为参数传入。
- 用WebBrowser承载视图,html编写页面,c#编写后端代码;用js调用后端代码,传入function参数作为回调;
- GetTableFields --参数:传入要剔除的自增字段; '-1'-自动剔除自增字段; ''输出全部字段
- Spring 框架下,用数组作为参数 传入到 存储过程,或存储过程返回动态数组到java程序 ,BLOB等大对象类似
- 数组作为参数时,传入基类首地址和子类首地址的区别
- 建立一个带头结点的的单向链表并输出到out53.dat和屏幕上。各节点的值为对应的下表。链表的节点数及输出地文件名作为参数传入
- ibatis中使用List作为传入参数的使用方法
- 以表达式作为参数传入SQL的存储过程中去
- 【C/C++】sprintf中如何将容器作为可变参数列表传入
- 中文作为参数传入 window.showModalDialog出现乱码的解决办法
- JSON中让key作为参数传入的方法