Python - 如何获取@property背后的属性

时间:2013-09-13 10:55:59

标签: python python-2.7 python-3.x properties

如何在Python中获取属性背后的属性?我有以下情况:

class User(object):
    def __init__(self):
        self._email = None

    @property
    def email(self):
       return self._email

    @email.setter
    def email(self, value):
         self._email = value

我要实现的是使用反射获取电子邮件属性背后的_email属性。 非常感谢任何提示。

1 个答案:

答案 0 :(得分:2)

没有通用的方法,因为属性不必仅仅是私有属性的代理。您可以拥有以下任何一项:

@property
def foo(self):
    return 4

@property
def bar(self):
    return self._bar**2

@property
def baz(self):
    sys.exit(1)

@property
def spam(self):
    if self._spam is None:
        self._spam = self._lazily_compute_spam()
    return self._spam

如果你想尝试它,你可以尝试用inspect模块获取属性方法的源代码并解析它,或者反编译字节码,但两者都是非常脆弱的想法。