2013-09-13 3 views
0

Как я могу получить атрибут за свойством в Python? У меня есть следующий сценарий:Python - Как получить атрибут позади @property

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, который находится позади электронной почты собственности с помощью отражения. Любые подсказки очень ценятся.

ответ

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 модуля и разобрать его, или декомпилировать байт-код, но и ужасно хрупкие идеи.

+0

Позор на меня, я полностью пропустил пункт свойств. Я должен был сосредоточиться на попытке использовать классическое сопоставление SQLAlchemy со свойствами. –

Смежные вопросы