exec()和元类】的更多相关文章

exec方法 元类 exec(str_command,globals,locals)参数1:字符串形式的命令参数2:全局作用域(字典形式). 如果不指定,默认globals参数3:局部作用(字典形式).如果不指定.默认locals 可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g = {} # 定义2个空字典 l = {} exec(""" global x,y x = 100 y = 20 z=30 ""&qu…
eval内置函数 # eval内置函数的使用场景:#   1.执行字符串会得到相应的执行结果#   2.一般用于类型转化,该函数执行完有返回值,得到dict.list.tuple等​dic_str = "{'a': 1, 'b': 2, 'c': 3}"print(eval(dic_str))​list_str = "[1, 2, 3, 4, 5]"print(eval(list_str))​tuple_str = "(1, 2, 3, 4, 5)&quo…
exec模块的补充 1.是什么? exec是一个Python内置模块. 2.exec的作用: ''' x = 10 def func1(): pass ''' 可以把"字符串形式"的python代码,添加到全局空间或局部名称空间中. 3.怎么用: # 参数1: 字符串形式的python代码 # 参数2: 全局名称空间字典 # 参数3: 局部名称空间字典 调用exec() .元类 1.什么是元类? 元类就是类的类,Chinese类的类是type,type是所有类的类,type就是一个元类…
目录 一.exec()的作用 二.元类 2.1什么是元类,元类的作用是什么? 2.2自定义创建元类 一.exec()的作用 exec执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码, 语法: exec(code,global_dict,local_dict) code:传入的文本代码 global_dic:传入的字典,接收的是全局名称空间和内置名称空间 local_dict:传入的字典,接收局部名称空间 例子 code = ''' g…
In memory of the more than 300 thousand Chinese murdered exec( 字符类型的代码,全局变量,局部变量 ).其中,全局变量和局部变量可以写成字典形式进行赋值. 举例: ''' 字符串 exec(字符串,全局变量.局部变量) ''' x = 10 expr = """ z = 30 sum = x + y + z print(sum) """ def func(): y = 20 exec(…
一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) #结果为True 2.issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) #结果为True…
eval与exec内置方法 将字符串作为执行目标,得到响应结果 eval常用作类型转换:该函数执行完有返回值 exec拥有执行更复杂的字符串:可以形成名称空间 eval内置函数的使用场景:   1.执行字符串会得到相应的执行结果   2.一般用于类型转化,得到dict.list.tuple等 dic_str = "{'a': 1, 'b': 2, 'c': 3}" print(eval(dic_str)) list_str = "[1, 2, 3, 4, 5]" p…
1,类也是对象 ''' 动态语言 可以在运行期间 动态生成类 修改对象属性 静态语言 ''''' ''' type(object_or_name, bases, dict) type(object) -> the object's type type(name, bases, dict) -> a new type ''' obj = type("TestClass",(object,),{}) print(obj) #<class '__main__.TestCla…
exec内置函数的补充 exec: 是一个python内置函数,可以将字符串的代码添加到名称空间中; - 全局名称空间 - 局部名称空间 exec(字符串形式的代码, 全局名称空间, 局部名称空间) # 使用exec, code相当于局部名称空间中的名字 code = ''' global x x = 100 y = 20 def func(): pass def __init__(): pass ''' # 自定义的全局名称空间 global_dic = { 'x': 10000 } # 自定…
1.什么是元类 元类让你来定义某些类是如何被创建的,从根本上说,赋予你如何创建类的控制权.可以把元类想成是一个类中类,或是一个类,它的实例是其它的类.当某个类调用type()函数时,你就会看到它到底是谁的实例. >>> class C(object): pass   >>> class CC: pass   >>> type(C) <type 'type'> >>> type(CC) <type 'classobj'…
一.知识储备 #exec:三个参数 #参数一:字符串形式的命令 #参数二:全局作用域(字典形式),如果不指定,默认为globals() #参数三:局部作用域(字典形式),如果不指定,默认为locals() exec的参数格式 #可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g={ 'x':1, 'y':2 } l={} exec(''' global x,z x=100 z=200 m=300 ''',g,l) print(g) #{'x': 100,…
一:知识储备 exec exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定,默认为locals() exec的应用: #可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g={ 'x':1, 'y':2 } l={} exec(''' global x,z x=100 z=200 m=300 ''',g,l) print(g) #{'x': 100,…
一.eval内置函数eval内置函数的使用场景: 1.执行字符串会得到相应的执行结果 2.一般用于类型转换,得到dict.list.tuple例: dic_str = ''{'a':1,'b':2}'' print(eval(dic_str)) # {'a':1,'b':2} with open(txt,'r',encoding='utf-8')as f: data_str = f.read() res = eval(data_str)二.exec内置函数exec应用场景: 1.执行字符串,没有…
一.eval.exec内置函数 1.eval函数 eval内置函数的使用场景: ①执行字符串会得到相应的执行结果 ②一般用于类型转换得到dict.list.tuple等 2.exec函数 exec应用场景 用来辅助了解元类的概念 ①执行字符串没有执行结果(没有返回值) ②将执行的字符串中产生的名字形成对应的局部名称空间 # 解析exec函数 # exec函数帮我们运行字符串中的代码,把字符串中产生的名字放到名称空间里 # 自己定义全局作用域中的名字和字典,自己定义局部作用域的名字和字典 # 将所…
---恢复内容开始--- 一.元类的介绍 元类:在python里,一切皆对象.所有自定义的类本身也是元类的对象,即所有自定义的类本质上也是由元类实例化出来的. class关键字创建自定义类的底层的工作原理(分为四步) 1.先拿到类名 2.再拿到类的基类们 (object,) 3.接着拿到类的名称空间 4.调用元类实例化得到自定义的类 通过class关键字创建一个类 class text: def __init__(self,name,age): self.name=name self.age=a…
什么是元类? 元类是类的类,是类的模板 元类是用来控制如何创建类的,正如类是创建对象的模板一样,而元类的主要目的是为了控制类的创建行为 元类的实例化的结果为我们用class定义的类,正如类的实例为对象(f1对象是Foo类的一个实例,Foo类是 type 类的一个实例) type是python的一个内建元类,用来直接控制生成类,python中任何class定义的类其实都是type类实例化的对象 方式一:使用class关键字 class Chinese(object): country='China…
一.异常处理 1.异常处理介绍: 异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常没有被应用程序处理,那么该异常就会被抛出来,程序执行随之停止 2.异常通常包含三个部分 1.traceback异常的追踪信息 2.异常的类型 3.异常的信息 3.为何使用异常处理: 避免程序因为异常而奔溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性 4.自定义处理异常的结构 1) try: except Exception as e: 2) try: except Exception:…
元类与异常处理1. 什么是异常处理    异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常    没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止    异常包含三个部分:        1. traceback异常的追踪信息        2. 异常的类型        3. 异常的信息    错误分为两大类:        1. 语法上的错误:在程序运行前就应该立即修正        2. 逻辑上的错误2. 为何要异常处理    避免程序因为异常而崩溃,所以在应用…
面向对象中的常用方法 1.instance 和 issubclass instance :判断两个对象是不是一类 issubclass :判断某个类是不是另一个类的子类 #两个常用方法的使用 class Person: pass ​ class Student(Person): pass ​ stu = Student() print(isinstance(stu, Student)) print(issubclass(Student,Person)) True True ##输出的结果是布尔值…
一.类的装饰器 类作为一个对象,也可以被装饰. 例子 def wrap(obj): print("装饰器-----") obj.x = 1 obj.y = 3 obj.z = 5 return obj ​ @wrap #将Foo类作为一个参数传入装饰器函数wrap,返回同时返回该对象,把新对象重新命名为Foo #即 Foo = wrap(Foo) class Foo: pass ​ #执行结果: #装饰器----- ​ print(Foo.__dict__) #输出结果可以看到,新的F…
内容目录: 一.元类 二.单例模式 一.元类 1 什么是元类: 源自一句话:在python中,一切皆对象,而对象都是由类实例化得到的 class OldboyTeacher: def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def score(self): print('%s is scoring' %self.name) # tea1=OldboyTeacher('egon',18,'male'…
一.isinstance issubclass class Person: passclass Student(Person): passstu1=Student()#判断是不是实例print(isinstance(stu1,Student))#判断是不是子类print(issubclass(Student,Person)) 二.反射 反射 实际上就是反省简单来说就是 对象具有一种修正错误的能力hasatter 是否存在某个属性getatter 获取某个属性setatter 设置某个属性dela…
1. 面向对象中的常用方法 ***** isinstance() # 判断某个对象是不是某个类的实例 # 判断stu对象是不是Student类的实例 是不是子类 issubclass() class Person: pass class Student(Person): pass stu = Student() #判断 两个对象是不是同一个类型 print(type(1) == type(1)) # 判断stu对象是不是Student类的实例 print(isinstance(stu,Stude…
元类是类的类,使我们自定义的类,即我们用class定义类本质就是元类,是类的模板 四步走: 一:控制class定义类的过程 1.先拿到类名 2.在拿到基类 3.执行类体代码,得到名称空间的dict 4.调用元类将三个参数传递进去 #其实class 是上面四步的封装.(隔离了复杂度) 二:自定义元类 class Mymeta(type): def __init__(self,class_name,class_base,class_dic): super().__init__(class_name,…
一.补充内置函数isinstance和issubclass 1.isinstance是判断一个对象是不是由一个对象产生的 class Foo: pass obj=Foo() print(isinstance(obj,Foo)) #判断一个对象是否是由某个类调用产生 # 在python3中统一类与类型的概念 d={'x':1} #d=dict({'x':1} #) #类即类型,d是一个对象,dict是一个类,d是由调用dict产生的对象 print(type(d) is dict) #type也可…
一.引子 元类属于Python面向对象编程的深层魔法,99%的人都不得要领,一些自以为搞明白元类的人其实也是自圆其说,点到为止,从队元类的控制上来看就破绽百出,逻辑混乱: 二.什么是元类 一切源自于一句话:Python中一切皆为对象.让我们先定义一个类,然后逐步分析 #!/usr/bin/env python # -*- coding: utf-8 -*- class MyTeacher(object): school='john' def __init__(self,name,age): se…
一.实例创建 在创建实例时,调用__new__方法和__init__方法,这两个方法在没有定义时,是自动调用了object来实现的.python3默认创建的类是继承了object. class A(object): def __init__(self, *args, **kwargs): self.name, self.age, self.gender = args[:3] def __new__(cls, *args, **kwargs): print("__new__ has called.…
''' # 知识储备exec() # 参数1:字符串形式的命令 # 参数2:全局作用域(字典形式),如果不指定默认就使用globals() # 参数3:局部作用域(字典形式),如果不指定默认就使用locals() ''' # g = { # 'x': 2, # 'y': 4 # } # l = {} # exec(''' # global x, m # x = 10 # m = 100 # # z = 3 # ''', g, l) # print(g) # print(l) '''一切皆对象,元…
补充内置函数 isinstance(obj,Foo)   # 判断obj是不是foo的实例 issubclass()      # 判断一个类是不是另一个类的子类 反射 什么是反射? 通过字符串来操作类或者对象的属性 怎么用? hasattr(adj,’xxx’) 判断adj有没有’xxx’属性 getattr(adj,’xxx’,None) adj有’xxx’就返回adj.xxx,没有则返回None,若不指定第三个                                 参数,没有则会…
一.储备知识exec 储备知识exec:有下面三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定默认使用globals() 参数三:局部作用域(字典形式),如果不指定默认就使用locals() # 格式:exec(object, globals, locals) # 可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g = { 'x':1, 'y':2 } l = {} exec(""" global x,z…