如何返回属性并将其保存为全局变量? (蟒蛇)

时间:2012-04-30 17:46:37

标签: python properties

这是我的代码:

def createProp(fget, fset, fdel):

    class prop(object):
        get=property(fget,fset,fdel)

    return prop().get
x=createProp(getter,setter,deleter)

我想要做的是让它返回一个属性,这样我就可以使变量x成为一个属性,但我无法弄清楚如何制作这样的函数。它正在做的是返回属性的值,而不是属性本身。

python 2.6

1 个答案:

答案 0 :(得分:4)

createProp = property

属性是完全普通的对象。 property只是另一个类。您可以在运行时创建它的实例,无论您需要什么上下文(不需要类),传递它们等等。是的,您可以(毫无意义地)在本地类中创建一个然后从那里获取它。但是,由于整个属性的重点是覆盖实例上的属性访问,因此您必须从类中获取它:return prop.get

然而,由于property通过descriptor protocol发挥其魔力,描述符必须在一个类中才能工作。你不能拥有一个属性的全局(或局部)变量 - 嗯,你可以,但使用它只会给你描述符对象,而不是运行fget,并且赋值不会触发{{1 }}。你不能做那样的事情,你不应该这样做。