元类(type)
type动态的创建一个类
type(“类名”, (父类), {属性})
Test = type("Test", (), {"num":0})
t1.Test()
type(t1)
结果为
__main__.Test
type创建一个带有方法的类
def printNum(self):
print("---num--%d-" %self.num)
Test2 = type("Test2", (), {"printNum":printNum})
t1 = Test2()
t1.num = 200
结果为
---num--200
_metaclass_魔法方法
python2中
class Foo(object):
# 如果有__metaclass__方法,就用该方法创建类,如果没有,就用python默认的方法创建
__metaclass__ = type("Foo", (), {})
python3中
class Foo(object, metaclass = type("Foo", (), {}))