Python Monkey修补程序在尝试使用对象的特定属性时引发AttributeError

Python Monkey修补程序在尝试使用对象的特定属性时引发AttributeError,python,Python,我有一个python类的实例 class Fum(object): foo = Foo() bar = Bar() fum = Fum() 出于我不想深入的原因,我想对这个对象进行猴子补丁,这样它的一个属性在特定的用例中是不受限制的。我更希望,如果我或其他开发人员尝试在monkey patched对象上使用该属性,会出现一个有用的异常来解释这种情况。我试图用一个属性来实现这一点,但运气不好 e、 g def raiser(): raise AttributeError(“不要在此对象

我有一个python类的实例

class Fum(object):
  foo = Foo()
  bar = Bar()

fum = Fum()
出于我不想深入的原因,我想对这个对象进行猴子补丁,这样它的一个属性在特定的用例中是不受限制的。我更希望,如果我或其他开发人员尝试在monkey patched对象上使用该属性,会出现一个有用的异常来解释这种情况。我试图用一个属性来实现这一点,但运气不好

e、 g

def raiser():
raise AttributeError(“不要在此对象上使用此属性。它因X原因被禁用。”)
fum.bar=属性(提升器)
>>>烟吧
>>> 

我缺少什么?

您不能将monkeypatch属性直接添加到对象的实例上<代码>描述符是类级别的概念,必须位于实例的类层次结构中。然而,有一个技巧是有效的:

class-Fum(对象):
foo=foo()
bar=bar()
fum=fum()
衍生燃料类别(燃料类别):
条=属性(提升器)
烟类=衍生烟
fum.bar#-->提高属性错误
def raiser():
  raise AttributeError("Don't use this attribute on this object. Its disabled for X reason.")

fum.bar = property(raiser)

>>> fum.bar
>>> <property object at 0xb0b8b33f>