面向对象之元类介绍

标签(空格分隔): 元类介绍


元类介绍:

在正式介绍元类之前,大家储备一下知识: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)
#print(l)
  • exec就是一个函数的执行;这里大家记住,后边我们会用到;

python中一切皆是对象,对象可以怎么用?

1.都可以被引用;x=obj
2.第二点,都可以当做函数的参数传入;
3.都可以当做函数的返回值
4.都可以当做容器类型的元素;(就是盛多个值,例如字典,列表)

class Foo:#类也是对象
    pass
obj= Foo()
print(type(obj))
print(type(Foo))

执行结果:
<class main,Foo>
<class ‘type‘>

  • 元类的概念:
    向上述的例子可以发现:Foo也是一个对象,在python中一切都是对象,从这里可以看出:类的类,就是被称为元类:<class ‘type‘>


如下:是通过元类定义的一个chinese类:

  • 一句话:元类就是原始的类,就是类的类

原文地址:https://www.cnblogs.com/surewing/p/9775601.html

时间: 2024-11-10 08:56:33

面向对象之元类介绍的相关文章

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

标签(空格分隔): 元类介绍 元类介绍: 在正式介绍元类之前,大家储备一下知识: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.都可以当作函数的返回值

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.什么叫元类

Python全栈开发之9、面向对象、元类以及单例

前面一系列博文讲解的都是面向过程的编程,如今是时候来一波面向对象的讲解了 一.简介 面向对象编程是一种编程方式,使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用.类就是一个模板,模板里可以包含多个方法(函数),方法里实现各种各样的功能,,对象则是根据模板创建的实例,通过实例,对象可以执行类中的方法,每个对象都拥有相同的方法,但各自的数据可能不同. 二.类.对象和方法 在Python中,定义类是通过class关键字,class后面紧接着是类名,类名通常

Python高级编程 面向对象、元类、多线程、异步IO、asyncio

—— 面向对象 —— 鸭子类型抽象基类类变量.对象变量的查找顺序静态方法.类方法.实例方法数据封装和私有属性对象的自省机制上下文管理器contextlib实现上下文管理器super函数的查找顺序mixin继承模式的应用 —— asyncio并发编程 —— 事件循环协程嵌套call_soon.call_later.call_atcall_soon_threadsafeThreadPoolExecutor+asyncioasyncio 模拟 http 请求future 和 taskasyncio 同

面向对象之 元类 , 反射 , 双下方法

1.元类 type type元类,又称为构建类,python中一切皆对象,类也可以理解为对象,python中自己定义的类,以及大部分内置类,都是由type元类实例化得来的 元类type class A: pass obj = A() print(type('abc')) #<class 'str'> print(type([1,2,3])) #<class 'list'> print(type((22,33))) #<class 'tuple'> print(type(

面向对象,元类,控制类,对象的创建

""" call 调用的意思 ? 在在对象被调用时 执行 函数 类 自定义元类 的目的 ? 1.可以通过call 来控制对象的创建过程 ? 2.可用控制类的创建过程 """ 自定义一个元类 元类也是一个类 但是需要继承type class MyMeta(type):?self 表示要创建对象的那个类(Person) *args是调用Person类时传入的参数??  def __call__(self, *args, **kwargs):??   

元类介绍

#储备知识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#都可以当做函数参数传入#都可以作为函数的返回值#都可以当做