0

如何在 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 属性。任何提示都非常感谢。

4

1 回答 1

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模块获取属性方法的源代码并解析它,或者反编译字节码,但两者都是非常脆弱的想法。

于 2013-09-13T11:05:36.327 回答