MST

星途 面试题库

面试题:Python中属性描述符的基本使用

请简述Python中属性描述符的概念,并举例说明如何创建一个简单的属性描述符类,用于控制某个类中属性的访问。
40.6万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

属性描述符概念

在Python中,属性描述符是实现了特定协议(__get____set____delete__方法中的一个或多个)的类。它允许我们对类属性的访问进行更细粒度的控制,比如在获取、设置或删除属性时执行自定义代码。

简单属性描述符类示例

class MyDescriptor:
    def __init__(self, initial_value=None):
        self.value = initial_value

    def __get__(self, instance, owner):
        print(f"获取属性值: {self.value}")
        return self.value

    def __set__(self, instance, value):
        if not isinstance(value, int):
            raise ValueError("属性值必须是整数")
        print(f"设置属性值为: {value}")
        self.value = value


class MyClass:
    my_attr = MyDescriptor(10)


obj = MyClass()
print(obj.my_attr)
obj.my_attr = 20
try:
    obj.my_attr = "not an integer"
except ValueError as e:
    print(f"错误: {e}")

在上述代码中,MyDescriptor 类是一个属性描述符类,实现了 __get____set__ 方法。MyClass 类使用 MyDescriptor 实例作为类属性 my_attr。这样,当访问或设置 my_attr 时,会调用描述符类中的相应方法,从而实现对属性访问的控制。