Python &引用;类用于保存描述符的属性名称优先于存储在实例上的属性";-这是什么意思?

Python &引用;类用于保存描述符的属性名称优先于存储在实例上的属性";-这是什么意思?,python,instance,descriptor,Python,Instance,Descriptor,在阅读“Python Essential Reference,第四版,David M Beazley”中的描述符时,提供了一个特定的示例,以阐明如何使用描述符对实例属性执行获取和更新操作。下面是提供的示例- class TypedProperty(object): def __init__(self,name,type,default=None): self.name = "_" + name self.type = type

在阅读“Python Essential Reference,第四版,David M Beazley”中的描述符时,提供了一个特定的示例,以阐明如何使用描述符对实例属性执行获取和更新操作。下面是提供的示例-

class TypedProperty(object):
    def __init__(self,name,type,default=None):
        self.name = "_" + name
        self.type = type
        self.default = default if default else type()
    def __get__(self,instance,cls):
        return getattr(instance,self.name,self.default)
    def __set__(self,instance,value):
        if not isinstance(value,self.type):
            raise TypeError("Must be a %s" % self.type)
        setattr(instance,self.name,value)
    def __delete__(self,instance):
        raise AttributeError("Can't delete attribute")
        
class Foo(object):
    name = TypedProperty("name",str)
    num = TypedProperty("num",int,42)
    
f = Foo()
a = f.name
f.name = "Guido"
在解释上述示例时,会做出以下声明:“类用于保存描述符的属性名称优先于实例上存储的属性。在上一个示例中,这就是为什么描述符对象采用名称参数,以及为什么名称会因 插入前导下划线。以便描述符在 例如,它必须选择一个与描述符使用的名称不同的名称 本身。”。我不清楚这是什么意思

为了理解如果在TypedPropertyinit()中没有添加前导下划线会发生什么情况,我将行更改为

self.name = name
这会导致每当我试图查看f.name时程序崩溃。那么,有人能解释一下,在查看或设置f.name时,搜索名称的作用域或名称空间的顺序吗