这是我的代码:
def createProp(fget, fset, fdel):
class prop(object):
get=property(fget,fset,fdel)
return prop().get
x=createProp(getter,setter,deleter)
我想做的是让它返回一个属性,这样我就可以制作变量 xa 属性,但我不知道如何制作这样的函数。它正在做的是返回属性的值,而不是属性本身。
蟒蛇2.6
这是我的代码:
def createProp(fget, fset, fdel):
class prop(object):
get=property(fget,fset,fdel)
return prop().get
x=createProp(getter,setter,deleter)
我想做的是让它返回一个属性,这样我就可以制作变量 xa 属性,但我不知道如何制作这样的函数。它正在做的是返回属性的值,而不是属性本身。
蟒蛇2.6
createProp = property
属性是完全普通的对象。property
只是另一个类。你可以在运行时创建它的一个实例,在你想要的任何上下文中(不需要类),传递它们等等。是的,你可以(毫无意义地)在本地类中创建一个,然后从那里获取它。但是由于属性的全部意义在于覆盖实例上的属性访问,因此您必须从类中获取它:return prop.get
.
然而,asproperty
通过描述符协议发挥其魔力,并且描述符必须在一个类中才能工作。您不能拥有一个作为属性的全局(或局部)变量——好吧,您可以,但是使用它只会给您描述符对象,而不是 run fget
,并且分配不会触发fset
。你不能做那样的事情,你也不应该这样做。