python核心
元类:
Python中所有的东西——都是对象。这包括整数、字符串、函数以及类。它们全部都是对象,而且它们都是从一个类创建而来,这个类就是type
元类就是类的类,类作为一种对象,即可以在运行时动态的创建类:
1.在函数里创建类
def choose_class(name):
if name == 'foo':
class Foo(object):
pass
return Foo # 返回的是类,不是类的实例
else:
class Bar(object):
pass
return Bar
>>> MyClass = choose_class('foo') #此时MyClass 为Foo
>>> print MyClass # 函数返回的是类
<class '__main__'.Foo>
>>> print MyClass() # 通过这个类创建类实例,也就是对象 相当于 print( Foo())
<__main__.Foo object at 0x89c6d4c>
2.使用type创建类
#type(类名, 由父类名称组成的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))
Foo = type('Foo', (), {'bar':True})
#相当于如下代码
>>> class Foo(object):
… bar = True
动态语言:
-动态语言:可以在运行的过程中,修改代码
-静态语言:编译时已经确定好代码,运行过程中不能修改
python是动态语言,运行时可以给类和类实例绑定属性和方法
__slots__变量:限制类实例的属性
__slots__ = ("name", "age")
__slots__定义的属性仅对当前类实例起作用,对继承的类是不起作用的