クラスから別のクラスのインスタンスにすべてのメソッドと属性をコピーしようとしています。残念ながら、プロパティに問題があります。次に例を示します。
class ToAdd(object):
@property
def foo(self):
return 'foo!'
class Base(object):
pass
b = Base()
for item, val in ToAdd.__dict__.iteritems():
if not item.startswith('__'):
setattr(b, item, val)
を呼び出すb.foo
と、 が返されると予想されます'foo!'
が、代わりに が返されます<property at 0x104a73d08>
。
これは mixin に似ていることに注意してください。ただし、クラスではなくインスタンスで動作するようにしたいと考えています。