10月17日元类回顾

发布时间 2023-10-17 14:35:13作者: songjunwan

元类回顾

1.什么是元类?

​ 能够实例化产生类的类,就叫元类

​ 所有类的元类是type

​ 自己定义一个类就需要让这个类继承type

2.class关键字底层原理

​ 底层的原理:调用type这个类里面的初始化方式来生成一个类对象(这体现了一切皆对象这个思想)

3.exec方法

exec 是 Python 中的一个内置函数,它用于执行动态生成的 Python 代码。它的作用是在运行时执行字符串中包含的 Python 代码

格式为:

exec(code, globals=None, locals=None)
  • code 是包含要执行的 Python 代码的字符串。
  • globalslocals 是可选的命名空间参数,用于指定全局和局部命名空间。通常情况下,你可以传递 globals()locals() 函数的返回值,分别表示当前的全局和局部命名空间。

举一个简单的例子我的用户输入一个函数然后执行它

这里要用到try和except的组合

try关键字开启一个异常处理块。代码中出现了异常,例如语法错误或其他运行时错误,Python会引发异常。这时,控制权会转移到except块。except块中,我们可以处理异常,通常是打印出错误信息。

#这里定义要被执行的代码
def read():
    print('看书学习')
# 用户输入一段Python代码
stu = input("请输入一段Python代码: ")

try:
    # 使用exec来执行用户输入的代码
    exec(stu)
except Exception as e:
    # 如果有异常,打印错误信息
    print(f"出现错误: {e}")

结果如图

上面我输入函数的名然后它就执行了和解释器的差不多所以也可以当成python解释器

自定义元类

如何自己定义一个元类呢?

让类继承type即可

class Mytype(type):
    pass

此时Mytype就是元类了,同时类在生成对象时它的初始化方法都来着元类,也就是说我用自己的定义的元类去生成类对象时,没有设计初始化这个方法,这个类对象就会使用type里面的初始化方法