http://www.cnblogs.com/linhaifeng/articles/8029564.html
类的类就为元类
元类所需知识
#exec() #参数1:字符串形式的命令 #参数2:全局作用域(字典形式),不指定默认使用全局globals() #参数3:局部作用域(字典形式),不指定默认使用局部locals() g={‘x‘:1, ‘y‘:2} l={} #把exec中代码当一个函数来看待 exec(""" global x,m x=10 m=100 z=3""",g,l) print(g) print(l)
一切皆对象,对象可以怎么来用,共性?
- 都可以被应用,x=obj
- 都可以当函数的参数传入
- 都可以当函数的返回值
- 都可以当作容器类型的元素,如都可当列表的元素
#类也是一个对象 class Foo: pass obj=Foo() print(type(obj)) print(type(Foo))
- 产生类的类称之为元类,默认所有用class定义的类,他们的元类是type
定义类的方式
#方式一定义类: class Chinese: country=‘China‘ def __init__(self,name,age): self.name=name self.age=age def talks(self): print("%s is talking" % self.name) #方式二定义类: #定义类的三要素 # 类名,类的基类,类的命名空间 class_name=‘Chinese‘ class_base=(object,) class_body=""" country=‘China‘ def __init__(self,name,age): self.name=name self.age=age def talks(self): print("%s is talking" % self.name) """ class_dic={} exec(class_body,globals(),class_dic) Chinese1=type(class_name,class_base,class_dic) print(Chinese) print(Chinese1)
自定义元类来控制类的创建
原文地址:https://www.cnblogs.com/yaya625202/p/8890507.html
时间: 2024-08-04 04:13:43