元类介绍

Posted yuexijun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了元类介绍相关的知识,希望对你有一定的参考价值。

#储备知识exec
#参数1:字符串形式的命令
#参数2:全局作用于(字典形式)如果不能指定默认使用globals()
#参数3:局部作用于(字典形式)如果不能指定就用locals()

g = {‘x‘: 10, ‘b‘: 2}
l = {}
exec(
‘‘‘
global x, m
x = 100
m = 200
b = ‘laownag‘
‘‘‘, g, l)
print(l)
print(g)
#在python中一切皆对象
#都可以被引用 x = obj
#都可以当做函数参数传入
#都可以作为函数的返回值
#都可以当做容器类的元素
#类也是对象
class Foo: #Foo = type(对象,对象,对象) 换句话说Foo就是type(obj)产出来的对象
pass
obj = Foo()
print(type(obj))
print(type(Foo))
# 产生类的类就是元类,默认所有用class定义的类的元类是type()
# 定义类的两种方式:
# 1:用class
class 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 = age
def 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) #再实例化一个obj1
print(obj1, obj1.name, obj1.age)



























































以上是关于元类介绍的主要内容,如果未能解决你的问题,请参考以下文章

面向对象之元类介绍

元类介绍

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

面向对象-元类介绍

3.1.14 元类的介绍

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