Python属性实例行为

Python属性实例行为,python,python-2.7,descriptor,python-internals,Python,Python 2.7,Descriptor,Python Internals,我知道什么是property/descriptor和decorator。但我很难理解这一点 类人(对象): @财产 def名称(self,func): 通过 打印(“--在设置--”之前,名称) @name.setter#装饰程序每次都会重新创建属性对象,将新信息与现有属性相结合。(a)和(c)中的对象ID相同是巧合。装饰者每次都重新创建属性对象,将新信息与现有属性相结合。(a)和(c)中的对象ID相同是巧合。它们是3个不同的属性对象;第三种方法只是重用分配给第一种方法的内存,因为第一种方法已经

我知道什么是
property/descriptor
decorator
。但我很难理解这一点

类人(对象):
@财产
def名称(self,func):
通过
打印(“--在设置--”之前,名称)

@name.setter#装饰程序每次都会重新创建属性对象,将新信息与现有属性相结合。(a)和(c)中的对象ID相同是巧合。

装饰者每次都重新创建属性对象,将新信息与现有属性相结合。(a)和(c)中的对象ID相同是巧合。

它们是3个不同的属性对象;第三种方法只是重用分配给第一种方法的内存,因为第一种方法已经被收集。当你使用

@name.getter


decorator返回一个新的属性对象,反映您定义的getter或setter,然后将其绑定到您定义的函数的名称。由于您定义的函数名为
name
,因此它将替换旧的
name
属性。

它们是3个不同的属性对象;第三种方法只是重用分配给第一种方法的内存,因为第一种方法已经被收集。当你使用

@name.getter


decorator返回一个新的属性对象,反映您定义的getter或setter,然后将其绑定到您定义的函数的名称。由于您定义的函数名为
name
,因此它将替换旧的
name
属性。

您使用
getter
的任何特定原因?这通常是不必要的;您只需在最初的
@property
调用中定义getter。我只是在这里进行实验。我创建这个假场景是为了反省我的怀疑。你使用
getter
有什么特别的原因吗?这通常是不必要的;您只需在最初的
@property
调用中定义getter。我只是在这里进行实验。我创造了这个假想来反省我的怀疑。