如何检查我是否可以在Python对象中设置(修补)属性

时间:2012-03-15 15:42:26

标签: python monkeypatching

从外部设置任意属性适用于普通类,但不适用于内部对象,如字符串?!如何检查是否允许设置任意属性?

1 个答案:

答案 0 :(得分:2)

使用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