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。我只是在这里进行实验。我创造了这个假想来反省我的怀疑。