exec模块的补充
是什么?
exec是python内置模块
exec的作用:
可以把"字符串形式"的python代码,添加到局部名称空间或者全局空间中
调用
exec()
1.文本形式的python代码
code='''
global #这里如果想要全局
x=10
y=20#默认是local的
def func():
pass
'''
2.全局的名称空间{}
global_dict={}
3.局部名称空间
local_dict={}
exec传值第一个是字符串形式的代码,第二个是全局字典,第三个是局部字典
exec(code,global_dict,local_dict)
1.元类
在python中一切皆对象
number=int(10)
def__str__
print(number)
class Chinese:
country='China'
def __init__(self,name,age)
self.name=name
self.age=age
def __init__(self):
print('speak Mandarin')
类创建两种方式
1.通过class来创建,内部会调用type()
2.通过手动调用type()实例化得到的类
class_name='Chinese'
class_base=(object,)
class_dict{}
code='''
country="china"
def __init__
(self,name,age):
self.name=name
self.age=age
def speak(self):
print("speak mandarin")
'''
exec(code,{},class_dict)
Chinese=type(class_name,class_base,class_dict)
print(Chinses)
什么是元类
就是类的类
元类可以限制类的创建
怎么创建元类:
1.自定义一个类,让这个类继承type
2.给需要使用的类通过metaclass指定自定义好的元类
-class Chinese (metaclass='自定义的类-')
2.youku架构
-ATM
用户试图从
接口层
数据层
-选课系统
用户视图层
接口层
数据层
models
-obj
-pickel
-youku
用户视图层
接口层
数据层
dict
json
优点:数据可以跨平台
缺点:不能通过对象.属性 的方法存取值
存储速度比pickle慢
models:
obj
pickle
有点:可以通过对象.属性的方式 存 取值
能存对象,也能直接获取对象