#储备知识exec#参数1:字符串形式的命令#参数2:全局作用于(字典形式)如果不能指定默认使用globals()#参数3:局部作用于(字典形式)如果不能指定就用locals() g = {‘x‘: 10, ‘b‘: 2}l = {}exec( ‘‘‘global x, mx = 100m = 200b = ‘laownag‘ ‘‘‘, g, l)print(l)print(g)#在python中一切皆对象#都可以被引用 x = obj#都可以当做函数参数传入#都可以作为函数的返回值#都可以当做容器类的元素#类也是对象class Foo: #Foo = type(对象,对象,对象) 换句话说Foo就是type(obj)产出来的对象 passobj = Foo()print(type(obj))print(type(Foo))# 产生类的类就是元类,默认所有用class定义的类的元类是type()# 定义类的两种方式:# 1:用classclass Chinese: #Chinese = type() country = ‘china‘ def __init__(self, name, age): self.name = name self.age = age def talk(self): print(‘%s is talk‘%self.name)#print(Chinese)obj = Chinese(‘egon‘, 18)print(obj, obj.name, obj.age)#方式二:type#定义类的三要素: 类名, 类的基类, 类的名称空间class_name = ‘Chinese1‘class_bases = (object,)class_body = ‘‘‘country = ‘china‘def __init__(self, name, age): self.name = name self.age = agedef talk(self): print(‘%s is talk‘%self.name)‘‘‘class_dic = {} #建立一个空字典用来储存局部的名称空间exec(class_body, globals(), class_dic) #把字符串的类体进行执行#print(class_dic)Chinese1 = type(class_name, class_bases, class_dic) #用type实例化一个对象 Chinese1#print(Chinese1)obj1 = Chinese1(‘laowang‘, 25) #再实例化一个obj1print(obj1, obj1.name, obj1.age)
原文地址:https://www.cnblogs.com/yuexijun/p/10261084.html
时间: 2024-10-29 17:53:43