2012-04-12 9 views
1

私はハードウェアを表すクラスを持っています。私は一度に一つのスレッドでそれを制御できるようにしたいだけですが、時間がかかりすぎると別のスレッドをリソースから蹴り飛ばすこともできます。私はこれを行う最善の方法は、クラス内の所有者のスレッドIDを追跡し、任意のプロパティは、他のスレッドからアクセスされている場合は例外をスローすると思う。クラスからのデータへのアクセスに例外をスローするにはどうすればよいですか?

これはメタクラスで解決できる問題のようです。何らかの理由で属性の取得を傍受し、スレッドIDが間違っていると例外をスローする必要がありますか?

答えて

1

あなたは、必ずしもあなたが__getattribute__使用することができ、メタクラスを必要としない:トリックん

class Hardware(object): 
    def __getattribute__(self, attr): 
     if super(Hardware, self).__getattribute__(owner_id) != current_thread_id: 
      raise YourAccessError # NOT AttributeError 
     return super(Hardware, self).__getattribute__(attr) 
+0

うん、 - 感謝を! – Eric

関連する問題