类的创建
1.通过class ...
2.通过type
type() 函数既可以返回一个对象的类型,又可以创建出新的类型
type(name, bases, dict)
name -- 类的名称。
bases -- 基类的元组。
dict -- 字典,类内定义的命名空间变量
Person = type('Person', (object,), {'name': '测试类属性'})
p1 = Person()
print(p1.name)
测试类属性
3.通过元类
class RunMetaClass(type):
def __new__(cls, obj, base, attr):
print("元类的new方法被调用了")
def run(self):
print("这是run方法")
attr['run'] = run
return type.__new__(cls, obj, base, attr)
class Run(object, metaclass=RunMetaClass):
pass
r1 = Run()
print(hasattr(r1, 'run'))
元类的new方法被调用了
True
函数type实际上是一个元类,type就是Python在背后用来创建所有类的元类。
我们自己定义的类默认使用的元类就是type这个元类,元类就是创建类这种对象的东西