文档章节

几个关于元类的小demo

chaleaoch
 chaleaoch
发布于 2017/08/28 16:36
字数 100
阅读 1
收藏 0
class Type(type):
    def __init__(cls, *args, **kwargs):
        print cls, args, kwargs

    def __new__(meta, cls_str, cls, args_dict):
        print cls_str, cls, args_dict
        return super(Type, meta).__new__(meta, cls_str, cls, args_dict)

    def __call__(cls, *args, **kwargs):
        print 'new'
        self = cls.__new__(cls, *args, **kwargs)
        if isinstance(self, cls):
            print 'init'
            self.__init__(*args, **kwargs)
        print 'return'
        return self


class Object(object):
    __metaclass__ = Type

    def __new__(cls, *args, **kwargs):
        print "__new__", args, kwargs
        return object.__new__(cls, *args, **kwargs)

    def __init__(self, *a, **kw):
        print "__init__", a, kw

Object(1, 2, 3)

© 著作权归作者所有

共有 人打赏支持
chaleaoch
粉丝 0
博文 15
码字总数 3019
作品 0
大连
程序员
私信 提问
跟小静读CLR via C#(05)- 访问限定、数据成员

跟小静读CLR via C#(05)- 访问限定、数据成员 今天跟大家分享一下关于访问限定和数据成员的知识。主要包括以下两点: Abstract, sealed, virtual, new, override怎么用? Const 和 readon...

技术小胖子
2017/11/16
0
0
zhaoxk/react-respond

react-respond 这是啥? 这是一个基于reactjs的布局组件 为啥? 这类组件应该是比较多的,而且很多成熟框架都有此类功能,做这玩意儿不是浪费时间吗? 对,是在浪费时间,我再来个粗糙的轮子...

zhaoxk
2016/10/17
0
0
Python高级编程技巧

本文展示一些高级的Python设计结构和它们的使用方法。在日常工作中,你可以根据需要选择合适的数据结构,例如对快速查找性的要求、对数据一致性的要求或是对索引的要求等,同时也可以将各种数...

铁扇公主1
2017/04/28
278
0
关于 self 和static的区别

<?php 可你知道self和static的区别么? 其实区别很简单,只需要写几个demo就能懂: Demo for self: class Car { public static function model(){ self::getModel(); } protected static fu......

chenhongjiang
2016/05/10
37
0
Objective-C Runtime:深入理解 类与对象

在那樱花盛开的季节 概述 常说Objective-C是一门动态语言,那么问题来了,这个表现在那些方面呢? 其实最主要的表现就是Objective-C将很多静态语言在编译和链接时做的事情放到了运行时去做,...

Jack_lin
03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

tomcat编译超过64k大小的jsp文件报错原因

  今天遇到一个问题,首先是在tomcat中间件上跑的web项目,一个jsp文件,因为代码行数实在是太多了,更新了几个版本之后编译报错了,页面打开都是报500的错误,500的报错,知道http协议返回...

SEOwhywhy
17分钟前
0
0
flutter http 请求客户端

1、pubspec文件管理Flutter应用程序的assets(资源,如图片、package等)。 在pubspec.yaml中,通过网址“https://pub.dartlang.org/packages/http#-installing-tab-”确认版本号后,将http(0...

渣渣曦
17分钟前
0
0
Django基本命令及moduls举例

一、Django基本命令 1.创建项目 django-admin.py startproject mysite 创建后的项目结构:- mysite - mysite #对整个程序进行配置 - init #导入包专用- settings ...

枫叶云
32分钟前
4
0
zabbix安装

rpm -ivh http://repo.webtatic.com/yum/el6/latest.rpm 安装jdk rpm -ivh (自行在网上下载rpm包) 安装php并修改相应参数 yum -y install php56w php56w-gd php56w-mysqlnd php56w-bcmath......

muoushi
33分钟前
3
0
MySQL自增属性auto_increment_increment和auto_increment_offset

MySQL的系统变量或会话变量auto_increment_increment(自增步长)和auto_increment_offset(自增偏移量)控制着数据表的自增列ID。 mysql> show tables;Empty set (0.00 sec)mysql> CREATE TA......

野雪球
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部