元类介绍

#储备知识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

元类介绍的相关文章

Python----面向对象---元类介绍

一.储备知识exec 参数1:字符串形式的命令 参数2:全局作用域(字典形式),如果不指定默认就使用globals() 参数3:局部作用域(字典形式),如果不指定默认使用locals() 示例代码如下: 1 g = { 2 'x': 1, 3 'y': 2 4 } 5 6 l = {} 7 8 exec(''' 9 global x, m 10 x = 10 11 m = 100 12 13 z = 3 14 ''', g, l) 15 16 print(g) 17 print(l) 18 19

1.元类介绍/2.自定义元类控制类的行为/3.控制类的实例化行为/4.控制类的实例化行为的应用

1.元类介绍 1.储备知识exec()参数1;字符串形式得命令参数2.全局作用域(字典形式),如果不指定默认就使用globals()参数3.局部作用域(字典形式),如果不指定默认就使用locals() 2.python 一切皆对象 ,对象可以怎么用? 2.1. 都可以被引用 x=obj 2.2. 都可以当作函数得参数传入 2.3. 都可以当作函数得返回值 2.4. 都可以当作容器类得元素 li=[func,time] # 类也是对象,Foo=type() 类是属于type() 类 3.什么叫元类

面向对象之元类介绍

标签(空格分隔): 元类介绍 元类介绍: 在正式介绍元类之前,大家储备一下知识:exec; exec命令使用 这个命令有三个参数: 1.字符串形式的命令,(把字符串提取出来) 2.全局作用域:(字典形式,如果不指定,默认使用globals()) 3.局部作用域,(字典形式,如果不指定默认locals) g={'x':1, 'y':2} l={} exec(""" global x,m x=10 m=100 z=3 """,g,l) print(g

面向对象之元类介绍(未完待续)

标签(空格分隔): 元类介绍 元类介绍: 在正式介绍元类之前,大家储备一下知识:exec; exec命令使用 这个命令有三个参数: 1.字符串形式的命令,(把字符串提取出来) 2.全局作用域:(字典形式,如果不指定,默认使用globals()) 3.局部作用域,(字典形式,如果不指定默认locals) g={'x':1, 'y':2} l={} exec(""" global x,m x=10 m=100 z=3 """,g,l) print(g

Python全栈之路----面向对象开发----元类介绍

储备知识exec,可以被当作函数来看待. 参数1:字符串形式的命令 参数2:全局作用域(字典形式),如果不指定默认就使用globals() 参数3:局部作用域(字典形式),如果不指定默认就使用locals() g = {'x':1, 'y':2} l = {} exec(''' global x,m x = 10 m = 100 z = 3 ''', g, l) python中一切皆对象,对象可以怎么用? 1.都可以被引用,x = obj 2.都可以当作函数的参数传入 3.都可以当作函数的返回值

29 异常处理与元类

异常处理 1. 什么是异常处理 异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止 异常包含三个部分: 1. traceback异常的追踪信息2. 异常的类型3. 异常的信息 错误分为两大类: 1. 语法上的错误:在程序运行前就应该立即修正2. 逻辑上的错误 2. 为何要异常处理 避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性 3. 如何异常处理 try: f=open('a.txt','

面向对象中关于元类的介绍与异常处理

一.异常处理 1. 什么是异常处理     异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常     没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止 异常包含三个部分:         1. traceback异常的追踪信息         2. 异常的类型         3. 异常的信息 错误分为两大类:         1. 语法上的错误:在程序运行前就应该立即修正         2. 逻辑上的错误 2. 为何要异常处理 避免程序因为异常而崩溃,所以在应用程

OC基础(十)类的本质及isa指针和元类的简单介绍

一.类的基本概念: 1.类其实也是一个对象, 这个对象会在这个类第一次被使用的时候创建 2.只要有了类对象, 将来就可以通过类对象来创建实例对象 3.实例对象中有一个isa指针, 指向创建自己的类对象 4.类对象中保存了当前对象所有的对象方法 5.当给一个实例对象发送消息的时候, 会根据实例对象中的isa指针去对应的类对象中查找 6.所有类对象的继承关系就是元类对象的继承关系 二.isa指针 1.每一个对象都包含一个isa指针.这个指针指向当前对象所属的类. 2.[d bark];表示给d所指向

3.1.14 元类的介绍

#储备知识exec#参数1:字符串形式的命令#参数2:全局作用域(字典形式),如果不指定默认就使用globals()#参数3:局部作用域(字典形式),如果不指定默认就使用locals() g={ 'x':1, 'y':2 } l={} #exec功能,把里面的第一个参数的字符转成代码执行,以global声明的变量存到g的字典变量(全局变量)里,其余的存在l的字典变量(局部变量里). exec(""" global x,m x=10 m=100 z=3 ""