Как я могу проверить, могу ли я установить (исправить) атрибуты в объектах Python - PullRequest
1 голос
/ 15 марта 2012

Установка произвольных атрибутов извне работает для обычных классов, но не для внутренних объектов, таких как строки ?!Как я могу проверить, разрешено ли мне устанавливать произвольные атрибуты?

1 Ответ

2 голосов
/ 15 марта 2012

Использование try-except

def canSetAttr(o):
    try:
         name = 'probablynotset'
         flag = hasattr(o, name)
         if flag:
             old = getattr(o, name)
         setattr(o, name, 'x')
         if flag:
             setattr(o, name, old)
         else:
             delattr(o, name)

         return True
     except AttributeError:
         return False
...