2016-07-16 14 views
0

ほとんどすべてのクラスが継承できないライブラリで多くの作業を行いますが、それらを拡張したいと考えています。Pythonのラッパークラスを自動生成する

このクラスAは継承不可能です。私はしばしば、_obj上で同じメソッドを呼び出す前に、いくつかの動作を実行するために、すべてのメソッドとすべての属性(@property)を手動で実装して、属性としてself._objを格納することによって "ラッパー"クラスを作成します。 Here's an example

継承できないクラスを拡張するための良い方法がありますか、少なくともこの退屈なプロセスを自動化するための方法はありますか?

答えて

1

はい:の属性を検索する場合は、__getattr__と定義してください。

+0

既存のメソッドに追加したい場合は、どのように機能しますか?私はそれらを古い方法で実装していますか?また、書き込める属性に '__setattr__'が必要ですか? –

+0

「既存のメソッドに追加する」の例を挙げられますか? –

+0

いくつかの属性をラッピングしています。私は '@ property.setter'を使っています。 GitHubのリンク先ファイルを参照してください。 –

関連する問題