反射
反射
反射是一种可以让程序在运行时获取并操作对象的技术。比如,我们可以通过反射来获取一个对象的属性或方法,并进行修改或调用。
反射是一种技术,它可以让程序在运行时了解自己的信息。你可以想象成一面镜子,可以反射出程序的属性和方法。比如,你有一个小狗的玩具,它有名字、年龄和玩的方法。你可以用反射技术,在程序运行时查看这个小狗的属性和方法,比如它的名字是什么,几岁了,还喜欢玩什么。这样,程序就可以更加灵活和智能了。
举个例子,假设你有一个程序,它可以读取一个文本文件,你可以用反射技术,在程序运行时查看这个文件的属性和方法,比如文件名、大小、创建时间等等。这样,程序就可以根据这些信息,自动进行一些处理,比如判断文件是否存在、是否需要备份等等。反射技术可以让程序更加智能化和自动化
举个例子,假设我们有一个名为“dog”的类,它有一个属性“name”和一个方法“bark”:
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print("Woof! My name is", self.name)
现在,我们可以使用反射来获取并修改这个类的属性:
# 创建一个Dog对象
my_dog = Dog("Fido")
# 使用反射获取name属性的值
name_value = getattr(my_dog, "name")
print(name_value) # 输出:Fido
# 使用反射设置name属性的值
setattr(my_dog, "name", "Rover")
print(my_dog.name) # 输出:Rover
我们也可以使用反射来调用这个类的方法:
# 使用反射调用bark方法
bark_method = getattr(my_dog, "bark")
bark_method() # 输出:Woof! My name is Rover
通过反射,我们可以在运行时动态地获取并操作对象,这非常有用,可以让我们的程序更加灵活和可扩展。
元类
元类是Python中的一个重要概念,它可以用来创建类。在Python中,一切皆为对象,包括类本身。元类就是用来创建这些类对象的类。元类的原理在于,Python中一切皆为对象,因此类也是对象。类对象是由元类创建而来的,因此元类控制了类的创建过程。元类可以定义类的属性、方法、继承关系等,因此可以实现一些高级的功能,比如ORM框架、自定义类装饰器等。
元类的应用非常广泛。比如在ORM框架中,可以用元类来自动将数据库表映射为Python中的类。在自定义类装饰器中,可以使用元类来动态地修改类的定义,从而实现一些高级的功能。在框架中,可以使用元类来实现插件系统,即通过元类创建插件类并将其注册到框架中。此外,元类还可以用来创建单例类、抽象类等。总之,元类是Python中非常强大的一个概念,可以用来实现各种高级功能,但是需要注意使用时的复杂度和维护成本。
作业
1 什么是反射? python中如何实现反射?
2 内置方法__str__与__del__的作用
3 定义元类的意义何在?
4 __call__与__new__与__init__的执行顺序

浙公网安备 33010602011771号