根据http://blog.jobbole.com/21351/所作的代码实践。

这篇讲得不错,但以我现在的水平,用到的机会是很少的啦。。。

#coding=utf-8

class ObjectCreator(object):
    pass

my_object = ObjectCreator()
# print my_object
def echo(o):
    print o

echo(ObjectCreator)
print hasattr(ObjectCreator, 'new_attribute')
ObjectCreator.new_attribute = 'foo'
print hasattr(ObjectCreator, 'new_attribute')
print ObjectCreator.new_attribute
ObjectCreatorMirror = ObjectCreator
print ObjectCreatorMirror()

def choose_class(name):
    if name == 'foo':
        class Foo(object):
            pass
        return Foo
    else:
        class Bar(object):
            pass
        return Bar

print '========================'
MyClass = choose_class('foo')
print MyClass
print MyClass()

print '============================'
print type(1)
")
print type(ObjectCreator)
print type(ObjectCreator())
print '=========================='
MyShinyClass = type('MyShinyClass', (), {})
print MyShinyClass
print MyShinyClass()
print '========================='
Foo = type('Foo', (), {'bar':True})
print Foo
print Foo.bar
f = Foo()
print f
print f.bar
print '======================'
FooChild = type('FooChild', (Foo,), {})
print FooChild
print FooChild.bar
print '==========================='
def echo_bar(self):
    print self.bar

FooChild = type('FooChild', (Foo,),{'echo_bar': echo_bar})
print hasattr(Foo, 'echo_bar')
print hasattr(FooChild, 'echo_bar')
my_foo = FooChild()
print my_foo.echo_bar()
print '============================='
age = 35
print age.__class__
name = 'bob'
print name.__class__
def foo():  pass
print foo.__class__
class Bar(object):  pass
b = Bar()
print b.__class__
print '============================'
print age.__class__.__class__
print name.__class__.__class__
print foo.__class__.__class__
print b.__class__.__class__
print '============================'

class UpperAttrMetaClass(type):
    def __new__(cls, name, bases, dct):
        attrs = ((name, value) for name, value in dct.items() if not name.startswith('__'))
        uppercase_attr = dict((name.upper(), value) for name, value in attrs)
        return super(UpperAttrMetaClass, cls).__new__(cls, name, bases, uppercase_attr)

class Foo(object):
    __metaclass__ = UpperAttrMetaClass
    bar = 'bip'

print hasattr(Foo, 'bar')
print hasattr(Foo, 'BAR')
f = Foo()
print f.BAR

print '============================'

最新文章

  1. [LeetCode] Compare Version Numbers 版本比较
  2. Hadoop基础思维导图
  3. P4基函数
  4. css/js在线压缩工具
  5. codeforces 676D Theseus and labyrinth BFS搜索
  6. Android源码中的FLAG为何使用16进制
  7. HIdernate入门
  8. python_Opencv_读取视频
  9. mybaitis配置信息
  10. javascript焦点图自动缓冲滚动
  11. 监控redis进程,如果没有自动重启
  12. 优先级队列Priority_queue
  13. 【转载】小结一下linux 2.6内核的四种IO调度算法
  14. Sqlite操作帮助类
  15. JSON的介绍与细节
  16. SQL语句操作数据
  17. 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性
  18. Windows安装使用Openssl
  19. 比较完整的HIS系统解释(转载记录)
  20. Cookies读写

热门文章

  1. python自动化测试学习笔记-8多线程
  2. ASP.Net 知识点总结(五)
  3. [转]C语言字符串操作总结大全(超详细)
  4. 题解报告:poj 1321 棋盘问题(dfs)
  5. Hbase源码分析:RPC概况
  6. Myeclipse2014安装&破解激活
  7. HTML城市联动
  8. 1682. [HAOI2014]贴海报
  9. Android Could not find com.afollestad:material-dialogs:0.7.6.0 解决
  10. Android通过微信实现第三方登录并使用OKHttp获得Token及源码下载